В моем приложении включена проверка подлинности Windows
ниже приведен код моего обработчика
public class BasicAuthenticationHandler : AuthenticationHandler<AuthenticationSchemeOptions>
{
private readonly IUser _userService;
public BasicAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger,
UrlEncoder encoder,
ISystemClock clock,
IUser UserService
) : base(options, logger, encoder, clock)
{
_userService = UserService;
}
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
var a = Request.HttpContext.User.Identity.Name;
User user = null;
user = await _userService.IsAuthenicated(a, "");
// Context.Response.StatusCode = StatusCodes.Status401Unauthorized;
// Context.res = new RedirectToActionResult("Index", "Home", null);
//Context.Response.StatusCode = StatusCodes.Status401Unauthorized;
if (user == null)
{
return AuthenticateResult.Fail("Invalid Username or Password");
}
var claims = new[] {
new Claim(ClaimTypes.NameIdentifier,user.UserName),
new Claim(ClaimTypes.Name, user.UserName),
};
var identity = new ClaimsIdentity(claims, Scheme.Name);
var principal = new ClaimsPrincipal(identity);
var ticket = new AuthenticationTicket(principal, Scheme.Name);
return AuthenticateResult.Success(ticket);
}
}
autheticateresult.fail, чтобы цикл запрашивал учетные данные Windows и не перенаправлял их на страницу ошибки пользователя.в то время как я попробовал с anomyouns, он работает нормально.