asp.net-mvc-3 – 使用表单身份验证的MVC3中的简单授权
我正在尝试做MVC3中应该是一件简单的事情.
我有一个应用程序,它使用表单身份验证来通过第三方SSO对用户进行身份验证.成功登录后,SSO会回复我的应用程序上的特定控制器操作.然后我调用FormsAuthentication.SetAuthCookie(user,false);. 我正在尝试实施某种程度的授权.简单地说,用户可以存在许多不同的角色,例如管理员和开发者.某些控制器操作应仅适用于某些角色.通过调用另一个外部API来获取用户所属角色的详细信息,该API返回一个简单的JSON响应指示. 理论上,在设置FormsAuthentication cookie之后,这应该像执行此类操作一样简单: string[] rolelist = GetRoleListForUserFromAPI(User.Identity.Name); HttpContext.User = new GenericPrincipal(User.Identity,rolelist); 但是,在调用SetAuthCookie后我无法直接调用它,因为此时HttpContext.User没有任何意义. 我可以尝试在每个请求上设置此项,但是对我的应用程序的请求将意味着往返API调用. 到目前为止,我见过的最有希望的方法是创建一个自定义的Authorization属性并覆盖OnAuthorization来执行以下操作: public override void OnAuthorization(AuthorizationContext filterContext) { if (<some way of checking if roles have already been set for this user,or role cache has timed out>) { string[] rolelist = GetRoleListForUserFromAPI(filterContext.HttpContext.User.Identity.Name); filterContext.HttpContext.User = new GenericPrincipal(filterContext.HttpContext.User.Identity,rolelist); } } 然后我可以在控制器动作前使用[MyCustomAuthorization(Roles =“Admin”)]来实现魔术. 但是,我不知道如何检测当前的HttpContext.User对象是否已设置其角色,或者是否在一段时间之前设置了它并且需要另一个API旅行. 对此最好的方法是什么? 解决方法
我的第一个想法是你应该调查实现自定义角色提供程序.这可能是矫枉过正,但似乎适合基于角色的管道.
来自MSDN here的更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 在运行时更改注入的对象
- ASP.NET MVC主页变量范围
- asp.net – 谁负责处理HttpPostedFile.InputStream – 何时
- 在发布asp.net Web API之后,ASP.NET MVC框架的未来是什么?
- asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理
- asp.net – 与Entity Framework中的联结表有多对多的关系?
- asp.net-mvc – Asp.net Mvc:使用LINQ to SQL创建模型类
- asp.net-mvc-2 – 将复杂对象从View传递给Controller:一个
- asp.net-mvc – ASP.NET MVC – 强类型视图模型,它属于哪里
- asp.net-mvc – 通过集合迭代并在Razor中打印索引和项目
- asp.net-core – IClaimsTransformer的User.IsIn
- 为什么我不能在运行时编辑我的ASP.NET Web应用程
- 玩玩asp.net 2.0的caching系列二 - RemoveOutput
- asp.net-mvc – window.location.href发送多个参
- asp.net – 让网站暂时无法使用的优雅方式?
- asp.net-mvc-2 – 带有JavaScript变量的ASP.NET
- asp.net-core – CoreCLR中的哈希算法
- .net – 当表中的数据发生变化时,SqlCacheDepend
- asp.net-mvc – 在ASP.NET MVC中在HTTP和HTTPS之
- IIS配置 – ASP.NET MVC返回所有请求的默认文档