ASP.NET MVC3中基于权限的授权
|
我正在将ASP.NET MVC添加到现有的WebForms应用程序中.目前,我不关心身份验证/登录,因为这部分是由现有代码(Forms身份验证)处理的. 在现有的WebForms应用程序中,我们每页都有一个完全自定义的基于权限的授权.因此,每个用户都有一组权限,列出了他允许访问的页面. 据我所知,对于ASP.NET MVC,有一个标准的AuthorizeAttribute,我可以在其中指定角色.我还发现了一些建议指定权限而不是角色的文章 – 然后可以做这样的事情: [CustomAuthorize(Roles = "View products,Edit products")] 通过扩展AuthorizeAttribute,我还可以定义如何存储和访问权限. 这个解决方案对我来说是可以接受的(虽然改变角色的语义有点味道). 解决方法首先要了解的是,与Webforms非常相似,MVC中有一个管道.每个请求都经过多种方法,并且在您可以“挂钩”并执行操作的过程中有一些扩展点.所有AuthorizeAttribute都挂钩到OnAuthorization扩展点,并根据您提供给它的条件(用户名,角色等)决定是否给某人访问权限. 这是一个例子:http://geekswithblogs.net/brians/archive/2010/07/08/implementing-a-custom-asp.net-mvc-authorization-filter.aspx 您可以创建自己的自定义授权属性,并使用自己的条件执行完全相同的操作.您无需重新使用Roles参数,您可以根据需要创建自己的所有参数. 这是MVC更喜欢的方法.另一个好处是,如果你也把它作为过滤器,那么你可以将它添加到全局过滤器,并让它适用于所有你想要的东西. 你基本上还有两个合理的选择.在Application_AuthenticateRequest中实现global.asax中的处理程序(不推荐)或创建一个覆盖OnAuthorize的公共BaseController(Attribute挂钩相同的东西,但在不同的地方). 很多人尝试使用Session变量进行身份验证,这只是最糟糕的事情. 由于我们对您的身份验证和权限系统一无所知,我们所能做的就是提供一般性建议. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 如何使用DropdownList助手正确创建MultiS
- ASP.NET Ajax回发突然停止在IPhone / IPad上
- 在ASP.NET 4 ReportViewer中使用对象数据源
- asp.net – 作为Windows服务托管的c#WCF Restful Web服务的
- asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义显示模板
- asp.net – 如何从WCF客户端拦截raw soap request / respon
- asp.net – 如何重命名Visual Studio 2012中的IIS Express网
- nuget-package – MvcScaffolding是否通过命令行与VS 2013
- asp.net-mvc-5 – 在禁用的TextBoxFor中只读是什么?
- asp.net-mvc – 如何为所有控制器编写动作过滤器
- asp.net-mvc-5 – MVC 5 – 向用户添加声明
- remoting和webservice有什么区别
- asp.net-mvc – 加载测试SignalR集线器应用程序的
- asp.net-mvc-3 – 将复选框绑定到MVC中的int数组
- asp.net-mvc-3 – StringLength属性行为
- 更改生成的ASP.Net ID?
- 使用NUnit与ASP.NET WebApi控制器执行集成测试
- asp.net – Global.asax的方法来自哪里?
- asp.net-mvc – ASP.NET MVC:确保用户始终拥有会
- asp.net-ajax – UpdateProgress链接到多个Updat
