Мое веб-приложение составлено из множества вызовов Ajax на стороне сервера RESTful APIs
. Каждый раз, когда клиент регистрируется на моем сайте, страница входа в систему получает маркер JWT
(JSON Web Token) с сервера и сохраняет его как cookie
на стороне клиента. (Я предпочитаю хранить его как cookie, потому что это единственный способ позволить браузеру отправлять его автоматически, и он считается более безопасным, чем веб-хранилище HTML5). Там поле в токене, описывающее дату истечения маркера. Для каждого вызова Ajax токен отправляется для аутентификации.
Если клиент остается на моей странице долгое время, токен может истечь. И сервер обнаружит это, когда клиент сделает следующий HTTP-запрос (а не только вызов REST). Я использую servlet filter
для перехвата запросов all
HTTP и проверки маркера для истечения срока действия. Если токен истек, будет отправлен ответ перенаправление на регистрацию.
Но есть проблема с вышеприведенным подходом: "Как изящно обрабатывать ответ перенаправление на логин-страницу на стороне клиента?"
-
Для
non-Ajax
инициированного HTTP-запроса я могу полагаться на браузер, чтобы обрабатывать ответ перенаправления на логин и автоматически переходить на страницу. -
Для
Ajax
инициированного HTTP-запроса кажется, что мне нужно добавить дополнительную логику кeach
ajax-вызовуcompletion handler
, чтобы обнаружить ответ перенаправления на регистрацию иimperatively
сделать переход страницы,
Или я полностью ошибаюсь?
Некоторые ссылки:
Автоматическое продление срока действия JWT (JSON Web Token)
Какую стратегию аутентификации следует использовать для моего API?
Неявная и явная аутентификация
ДОБАВИТЬ 1:
Кажется, браузер будет обрабатывать перенаправление 302 прозрачно. Так что, возможно, я могу просто вернуть перенаправление 302 на страницу входа, будь то для вызова ajax или обычного посещения страницы. Я попытаюсь ответить позже.
Из здесь:
Если ответ является перенаправлением HTTP (код статуса 301, 302, 303 или 307), то он ДОЛЖЕН быть прозрачно соблюден (если он не нарушает безопасности или бесконечных циклов). Любая другая ошибка (включая 401) ДОЛЖНЫ заставить объект использовать эту страницу ошибки в качестве ответа.
Поймать 302 НАЙДЕНО в JavaScript
Как управлять запросом перенаправления после вызова jQuery Ajax