asp.net-mvc – 覆盖控制器AuthorizeAttribute只有一个操作
发布时间:2020-12-15 18:54:19 所属栏目:asp.Net 来源:网络整理
导读:我有一个用AuthorizeAttribute装饰的控制器。控制器包含几个操作,除了需要由CustomAuthorizeAttribute提供一些自定义认证的操作之外,所有操作都需要认证。 我的问题是一旦我添加了[授权]在控制器级别可以覆盖它(或删除它与[CustomAuthorize]只是一个动作?
我有一个用AuthorizeAttribute装饰的控制器。控制器包含几个操作,除了需要由CustomAuthorizeAttribute提供一些自定义认证的操作之外,所有操作都需要认证。
我的问题是一旦我添加了[授权]在控制器级别可以覆盖它(或删除它与[CustomAuthorize]只是一个动作?或者,我必须从控制器级别删除[授权],并将它单独添加到每个其他操作? 我纯粹为了方便,因为我是懒惰,不想装饰每一个动作与AuthorizeAttribute。 [Authorize] public class MyController : Controller { //requires authentication public ViewResult Admin() { return View(); } //... a lot more actions requiring authentication //requires custom authentication [CustomAuthorize] //never invoked as already failed at controller level public ViewResult Home() { return View(); } } 解决方法
您可以更改属性运行的顺序(使用Order属性),但我相信在这种情况下,它们将仍然运行,除非生成立即生效的结果。关键是在最高级别(类)应用最小限制性属性,并对方法获得更多限制。例如,如果您希望Home操作公开,您需要从类中删除Authorize属性,并将其应用于其他每个方法。
如果操作具有相同的允许级别,但具有不同的结果,则改变顺序可能就足够了。例如,您通常会重定向到“登录”操作,但对于Home,您要重定向到“关于”操作。在这种情况下,给予类属性Order = 2和Home动作属性Order = 1。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 需要经过身份验证的用户的Ajax调用操作方法
- asp.net-mvc – 如何生成链接以在asp.net MVC中下载文件?
- asp.net-mvc-2 – 什么是Html.Validate和Html.ValidateFor方
- asp.net – 防止在ASP .Net中为单个用户进行多次登录
- asp.net – 偶尔获取SqlException:超时过期
- asp.net – 如何更改Y轴标签字体大小?
- asp.net-mvc-3 – ASP.NET MVC如何从Controller访问Global.
- asp.net – 在代码而不是数据库中存储salt
- 使用ASP.NET窗体身份验证的WCF服务
- asp.net-mvc-3 – 应该如何看待“分离”?