Mat*_*und 5 c# authorization asp.net-core
默认情况下,我的 Asp.net 核心站点需要身份验证
services.AddMvc(config =>
{
//only allow authenticated users
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
Run Code Online (Sandbox Code Playgroud)
但是对于一项操作,我需要允许匿名访问(如果数据库中没有用户,则为 /Account/AddUser)。
我创建了此自定义策略,用于检查用户是否已通过身份验证或用户 db 是否为空。
[Authorize(Policy = "NoUsersInDatabaseOrUserAuthenticated")]
public IActionResult AddUser()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
全球政策与此之间似乎存在 AND,因此它不起作用。如果我添加 [AllowAnonymous],则根本不会评估该政策。
如何将全局策略替换为一项操作的自定义策略?
你不能。政策是累加性的。因此,全局将始终存在,然后再评估任何额外的策略。此外,策略需要身份验证,您不能有允许未经身份验证的用户或其他内容的策略,它们必须始终经过身份验证,因为身份验证会根据授权结果进行操作。
| 归档时间: |
|
| 查看次数: |
8670 次 |
| 最近记录: |