【发布时间】:2018-05-01 10:29:33
【问题描述】:
在 .Net Core 中,控制器属性 [AllowAnonymous] 允许您设置控制器以允许未登录的用户访问控制器。
有没有办法做相反的事情,要求用户登录?如果不给所有用户一个角色,然后使用 [Authorize(Roles = "WarmBody")] 检查每个控制器,我看不到如何要求登录?
【问题讨论】:
标签: c# asp.net-core authorization asp.net-authorization
在 .Net Core 中,控制器属性 [AllowAnonymous] 允许您设置控制器以允许未登录的用户访问控制器。
有没有办法做相反的事情,要求用户登录?如果不给所有用户一个角色,然后使用 [Authorize(Roles = "WarmBody")] 检查每个控制器,我看不到如何要求登录?
【问题讨论】:
标签: c# asp.net-core authorization asp.net-authorization
您应该添加自定义策略过滤器
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
//other code ...
}
//other code ...
}
或者为每个控制器设置[Authorize]属性
【讨论】:
您不需要基于角色的授权,只需使用控制器上的[Authorize] 属性或您想要限制登录用户的操作。
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/simple
【讨论】: