1
结束我想用asp.net核心实现自定义身份验证/授权流程,但未能这样做。认证似乎工作确定:如果我一步调试一步,我可以看到一个AuthenticationTicket从包含有isAuthenticated到真正的身份ClaimsPrincipal创建:Asp.Net核心自定义授权总是以401未授权
public class MyAuthHandler : AuthenticationHandler<MyAuthOptions>
{
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
// grab stuff from the HttpContext
string authHeader = Request.Headers["Authorization"];
// do some stuff that are successfull in my tests
var cp = DoTokenBasedAuthentication(authHeader);
var ticket = new AuthenticationTicket(cp,
new AuthenticationProperties(), Options.AuthenticationScheme);
return Task.FromResult(AuthenticateResult.Success(ticket));
}
}
不过,我尝试后添加一个虚拟AuthorizationHandler即:
public class MyRequirement : IAuthorizationRequirement
{
public MyRequirement()
{
}
}
public class MyAuthRequirement : AuthorizationHandler<MyRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MyRequirement requirement)
{
context.Succeed(requirement);
return Task.CompletedTask;
}
}
而与此代码在我的启动文件:
services.AddAuthorization(options =>
{
options.AddPolicy("My",
policy => policy.Requirements.Add(new MyRequirement()));
});
但每当我加上“[授权(”我“)”在控制器上,那么所有调用总是返回401.而我的AuthorizationHandler从来没有达到。 此问题与Asp.Net Core policy based authorization ends with 401 Unauthorized类似,但与我的情况稍有不同,因为我的用户已通过身份验证。我正在努力调试到asp.net MVC源代码,所以我不知道发生了什么。
哇...我很惊讶,我永远也不会想到,是一个问题,因为没有什么是抱怨。非常感谢 ! – CanardMoussant