Хорошо. Я потратил час, и вот решение - на случай, если у кого-то будет похожий вариант использования.
Шаг 1. Создание нового класса, который будет динамически получать текущие http-запросы для определения перенаправления:
public class CustomCookieAuthenticationEvents : CookieAuthenticationEvents
{
public override Task RedirectToLogin(RedirectContext<CookieAuthenticationOptions> context)
{
var httpContext = context.HttpContext;
var routePrefix = httpContext.GetRouteValue("lang");
context.RedirectUri = $"/{routePrefix.ToString()}/Authentication/LogIn";
return base.RedirectToLogin(context);
}
}
Шаг 2: В Startup изменение декларации аутентификации cookie, которая относится к перенаправлению на страницу аутентификации:
services.AddScoped<CustomCookieAuthenticationEvents>();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = new PathString("/Authentication/LogIn");
options.EventsType = typeof(CustomCookieAuthenticationEvents);
});
Обратите внимание на регистрацию CustomCookieAuthenticationEvents в качестве службы выше.