Вы можете обработать событие OnRedirectToLogin
, чтобы предоставить собственную логику для процесса перенаправления. Вот пример реализации:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(o =>
{
o.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = ctx =>
{
var relativeRedirectUri = new Uri(ctx.RedirectUri).PathAndQuery;
context.Response.Headers["Location"] = relativeRedirectUri;
context.Response.StatusCode = 401;
return Task.CompletedTask;
}
};
});
Переданное свойство ctx.RedirectUri
является абсолютным, поэтому приведенный выше код создает относительную копию и использует ее вместо этого.
Реализация по умолчанию, которую он заменяет, немного сложнее, поскольку поддерживает как запросы AJAX, которые возвращают запросы 401, так и не-AJAX, которые выполняют перенаправление. Если вам нужно поддерживать оба, взгляните на source и измените его соответствующим образом.