asp.net-mvc – ASP .NET MVC保护控制器/动作
发布时间:2020-12-16 07:34:47 所属栏目:asp.Net 来源:网络整理
导读:如果我只想让管理员访问名为“ManagerUser”的操作,我知道我可以这样做: [Authorize( Roles = Constants.ROLES_ADMINISTRATOR )]public ActionResult ManageUser( string id ){} 如果我想让除了管理员以外的所有人访问该怎么办?我不想在函数上编写所有角色
如果我只想让管理员访问名为“ManagerUser”的操作,我知道我可以这样做:
[Authorize( Roles = Constants.ROLES_ADMINISTRATOR )] public ActionResult ManageUser( string id ) { } 如果我想让除了管理员以外的所有人访问该怎么办?我不想在函数上编写所有角色:|. 有什么建议/出路吗? 解决方法
您可以创建自己的自定义Authorize属性,例如“AuthorizeAllExceptAdmin”.在该类中,您只需要检查当前用户是否是管理员,如果他们拒绝它,否则接受它.
这是一个很好的tutorial,但你可能会得到类似的东西: public class AuthorizeAllExceptAdmin : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { return !httpContext.User.IsInRole(Constants.ROLES_ADMINISTRATOR); } } 然后您的控制器方法变为: [AuthorizeAllExceptAdmin] public ActionResult SomethingOnlyNonAdminsCanDo() { } 这是一个自定义属性的示例,它接受了拒绝的角色. public class DoNotAuthorize : AuthorizeAttribute { private IEnumerable<string> _rolesToReject; public DoNotAuthorize(IEnumerable<string> rolesToReject) { _rolesToReject = rolesToReject; } protected override bool AuthorizeCore(HttpContextBase httpContext) { foreach (var role in _rolesToReject) { if (httpContext.User.IsInRole(role)) return false; } return true; } } 然后您的控制器方法变为: [DoNotAuthorize(new [] {Constants.ROLES_ADMINISTRATOR})] public ActionResult SomethingOnlyNonAdminsCanDo() { } 在选择上述选项之一之前,我会考虑一下.如果你认为你有几个具有类似授权要求的方法(或整个控制器)(即管理员无法执行的几个操作),那么我会坚持使用非参数化的自定义属性.这样,您可以稍后将它们一起进化(仅通过更改自定义属性).例如,稍后您可能希望管理员能够进入可以执行这些操作的特殊模式. 或者,如果自动化在动作之间变化更大,那么使用参数化列表是有意义的,因为它们将相对独立地发展. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – VS 2010失败调试:HttpException在LoadControl中
- asp.net-core-mvc – 如何考虑请求和响应范围标头流式传输视
- asp.net-mvc – MVC4 SimpleMemberhip’提供商遇到了未知错
- ASP.NET网站中的深度优先嵌套路由
- asp.net-mvc – Chrome34忽略域名为“.cloudapp.net”的coo
- 在ASP.NET MVC 4中将jQuery 1.8.3更新为jQuery 1.9.0
- 什么是ASP.NET WebForms相当于ASP.NET MVC的ViewData
- asp.net – 当我提交时,为什么我的文本框无法识别值已更改?
- asp.net-mvc – ASP MVC区域和ActionLink
- razor – ASP.NET MVC 4 – for循环帖子模型集合属性,但for
推荐文章
站长推荐
- asp.net-mvc – “test”服务器中的ASP.NET MVC运
- asp.net – ASP .NET 5 MVC 6身份3角色索赔组[已
- asp.net – 如何将HTML片段(作为委托?)传递给声
- asp.net – 单独的应用程序服务器和数据库服务器
- asp.net-mvc – 将带有字符串的json数组发布到As
- asp.net – 将提交请求提交到aspx页面
- ASP.Net RSS提要
- asp.net – 可以在.NET Framework和.NET Core之间
- asp.net-mvc – 如何在MVC中使用HtmlHelper获取自
- asp.net-mvc – 保护抓取工具中的网站内容
热点阅读