谁能告诉我[Authorize(Policy =“PolicyName”)]是如何工作的,当用户未登录时,为什么策略会运行?例如,如果我从.RequireAssertion方法的委托返回'true',即使用户是匿名用户,操作或控制器也是可访问的?
[Authorize]
[Authorize(Policy = "TestAccess")]
public async Task<IActionResult> Test()
{
return Json("Test Actioned Reached");
}
字符串
为什么这里需要[Authorize]属性?如果[Authorize(Policy =“TestAccess”)]表示当用户不是匿名用户且此策略被传递时,将访问- action/controller?
如果我写:
[Authorize(Policy = "TestAccess")]
public async Task<IActionResult> Test()
{
return Json("Test Actioned Reached");
}
型
政策是这样的:
services.AddAuthorization(options => {
options.AddPolicy("TestAccess", policy => policy.RequireAssertion(context =>
{
return true; // For Testing only
}));
});
型
即使用户是匿名用户,也会执行Test()操作。这是怎么回事对不起,我的英语不好。- 谢谢-谢谢
2条答案
按热度按时间wz3gfoph1#
在下面的代码中尝试
字符串
你的代码只是简单地在需求管道中添加true
型
上面的代码在处理程序的管道中添加true,并且true满足所有条件,包括匿名用户。
更多细节请看方法src代码
型
AuthorizationPolicyBuilder.cs
9gm1akwq2#
加
字符串