c# – 如何在控制器和操作级别使用Authorize属性?
发布时间:2020-12-15 08:43:31 所属栏目:百科 来源:网络整理
导读:我已经实现了自己的自定义Authorize属性. 该属性既适用于控制器级别,也适用于操作级别. 这是我需要做的一个例子: [ClaimsAuthorize(Roles = "AdvancedUsers")]public class SecurityController : Controller{ [ClaimsAuthorize(Roles = "Administrators")]
我已经实现了自己的自定义Authorize属性.
该属性既适用于控制器级别,也适用于操作级别. 这是我需要做的一个例子: [ClaimsAuthorize(Roles = "AdvancedUsers")] public class SecurityController : Controller { [ClaimsAuthorize(Roles = "Administrators")] public ActionResult AdministrativeTask() { return View(); } public ActionResult SomeOtherAction() { return View(); } } 目前,如果用户具有管理员角色但不具有AdvancedUsers角色,则他无法执行“管理任务”. 即使用户未在控制器级别授权,如何更改此行为以在操作级别执行安全检查? 目前,我能想到的唯一解决方案是实现2个属性:一个用于保护控制器,另一个用于保护操作.然后我将使用Order属性首先在动作级别执行一个. 但是,如果可能的话,我更喜欢具有单个属性的解决方案. 解决方法
这不应该是可能的.想象一下MVC与授权过滤器一起使用的逻辑.
>确定控制器后 – 检查是否存在适用于该控制器的授权过滤器并执行该过滤器. 在所有情况下,授权失败都会使管道短路. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |