ASP.NET MVC 角色授权
Posted
技术标签:
【中文标题】ASP.NET MVC 角色授权【英文标题】:ASP.NET MVC Roles Authorization 【发布时间】:2010-10-21 07:27:34 【问题描述】:我想将我的控制器类的角色默认设置为“管理员、内容编辑器”
[Authorize(Roles = "Administrators, Content Editor")]
我通过使用上面的属性装饰控制器来做到这一点。但是,我希望所有人都可以使用一项操作(即“查看”)。如何重置角色以便每个人(包括完全未经授权的用户)都可以访问此操作。
注意:我知道我可以使用上面的 authorize 属性来装饰其他动作,但我不想一直这样做。我希望所有控制器操作在默认情况下都无法访问,这样如果有人添加操作,他们必须做出深思熟虑的决定以使其对公众可用。
【问题讨论】:
那么你想要http://***.com/questions/780436这样的东西吗? 是的 - 看起来很正确......希望这是内置于 std 控制器的,但编写代码的工作量不大。谢谢你把我联系起来。 ASP MVC Authorize all actions except a few的可能重复 【参考方案1】:MVC4 有一个新的属性正好用于这个[AllowAnonymous]
[AllowAnonymous]
public ActionResult Register()
http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx
【讨论】:
【参考方案2】:您可以将 Authorize 属性放在操作方法上。不只是在班级层面。
因此,将属性从控制器类移动到您想要保护的操作方法。
【讨论】:
嗨 Kieron,感谢您的回复。正如我的问题的注释部分所述,我知道这是可能的,但我希望控制器操作的默认设置不可访问,而不必使用授权属性来装饰它们。 我认为这是最好的答案。【参考方案3】:到目前为止,我能想到的唯一解决方案是创建并注册另一个控制器,这样我就有一个用于匿名访问,一个用于授权访问,但这并不像我希望的那样优雅。
【讨论】:
以上是关于ASP.NET MVC 角色授权的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 表单身份验证 + 授权属性 + 简单角色
使用 Azure AD 的 Asp.net core mvc 基于角色的授权
如何在asp.net mvc 5身份中的授权属性中使用动态角色