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 5 - 使用角色授权错误

ASP.NET MVC 表单身份验证 + 授权属性 + 简单角色

使用 Azure AD 的 Asp.net core mvc 基于角色的授权

如何在asp.net mvc 5身份中的授权属性中使用动态角色

带有权限代码的 ASP.NET MVC 4 自定义授权属性(无角色)

带有参数的 ASP.NET MVC 授权属性