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