web.config 中的标签基于路径,而 MVC 与控制器操作和路由一起使用。
如果您只是想阻止未登录的用户,但在您尝试基于角色应用授权以及您希望自定义处理未经授权的类型。
BobRock 的回答涵盖了第一种情况。
用户应至少具有以下角色之一才能访问控制器或操作
[Authorize(Roles = "Admin, Super User")]
用户应该具有这两个角色才能访问控制器或操作
[Authorize(Roles = "Super User")]
[Authorize(Roles = "Admin")]
可以访问 Controller 或 Action 的用户是 Betty 和 Johnny
[Authorize(Users = "Betty, Johnny")]
在 ASP.NET Core 中,您可以使用声明和策略原则通过[Authorize]
.
options.AddPolicy("ElevatedRights", policy =>
policy.RequireRole("Administrator", "PowerUser", "BackupAdministrator"));
[Authorize(Policy = "ElevatedRights")]
第二个在更大的应用程序中非常方便,在这些应用程序中,可能需要根据情况使用不同的限制、流程和处理来实现授权。出于这个原因,我们可以扩展AuthorizeAttribute 并为我们的项目实施不同的授权替代方案。
public class CustomAuthorizeAttribute: AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{ }
}
在 ASP.NET MVC 中进行授权的“正确完成”方式是使用该[Authorize]
属性。