У меня есть аутентификация на основе Cook ie в моем веб-приложении, к которой вспомогательное приложение делает несколько ajax запросов для получения данных из базы данных.
проблема в том, что если пользователь не аутентифицирован, я перенаправьте его на expired.html
, в тестовом режиме, если я просто запустил в браузере или почтальоне вызов API, например example.com/api/test
, не получив сначала аутентификационный кулинар ie, я правильно перенаправлен на expired.html
. проблема возникает, когда я пытаюсь вызвать этот api через ajax
, поэтому, сделав простой запрос .get
следующим образом:
function getPlu(codplu, callback){
let api = 'https://www.example.it/api/plu/?codplu=' + codplu
$.get( api, callback );
}
getPlu('COPERTI', callback => {
...
});
я просто получаю ответ от api с кодом 302
и .get
на expired.html
с кодом 304
, но пользователь по-прежнему не перенаправлен на expired.html
Итак, как вы можете видеть, код состояния для этого запроса api - 302, а местоположение должно быть expired.html
НО он не перенаправляется.
![enter image description here](https://i.stack.imgur.com/wfdvm.png)
Может быть, браузер не обрабатывает автоматически ajax перенаправления, и мне нужно сделать это через клиент - сторона (перенаправить, если status.code == 302), или я могу исправить это на стороне сервера?
Вот как аутентификация выполняет перенаправление
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options => {
options.Cookie.Name = "AUTH_TOKEN";
options.Cookie.MaxAge = TimeSpan.FromMinutes(120);
options.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = (context) =>
{
context.HttpContext.Response.Redirect("https://www.example.it/vmenu/expired.html");
return Task.CompletedTask;
}
};
});