Я использую проверку подлинности файлов cookie в C# ASP.NET и имею следующий обработчик событий:
Код: Выделить всё
options.ReturnUrlParameter = "";
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.SameSite = SameSiteMode.Strict;
options.LoginPath = "/Pin/Login";
options.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = context =>
{
UriHelper.FromAbsolute(context.RedirectUri, out String? scheme, out HostString host, out PathString path, out QueryString query, out FragmentString fragment);
var loginRedirect = UriHelper.BuildAbsolute(scheme, host, path);
context.Response.Cookies.Delete("ReturnUrl");
context.Response.Cookies.Append("ReturnUrl", context.Request.Path.Value ?? "/");
context.Response.Redirect(loginRedirect);
return Task.CompletedTask;
}
};
Код: Выделить всё
ReturnUrlКод: Выделить всё
public async Task OnGetAsync()
{
if (Request.Cookies.ContainsKey("ReturnUrl"))
{
ReturnUrl = Request.Cookies["ReturnUrl"] ?? "/";
Response.Cookies.Delete("ReturnUrl");
}
return Page();
}
Однако, если я нажимаю следующую ссылку, например /Site/PageTwo, перед входом в систему, Я по-прежнему возвращаюсь к /Pin/Login, но не запускаю OnRedirectToLogin, поэтому для моего ReturnUrl не устанавливается значение "/Site/PageTwo".
Как я возвращаюсь к /Pin/Login, когда я запросил /Site/PageTwo без запуска OnRedirectToLogin?
Подробнее здесь: https://stackoverflow.com/questions/798 ... login-page
Мобильная версия