В настоящее время мы работаем над приложением REST, используя Dropwizard на стороне сервера и RequireJS, Backbone на стороне клиента.Обработка ошибок аутентификации на стороне клиента
Наша модель аутентификации основана на файлах cookie. По каждому запросу веб-фильтр проверяет наличие соответствующего файла cookie и его значения, токена. Если маркер остается в силе, он перенаправляет запрос на цепи фильтра, если он не будет отвечать 401.
На стороне клиента заканчивается, как:
do an ajax request:
success:
render the rest of the content
error: // got 401
stop whatever you were doing and redirect to the login page
только Недостаток этого подхода заключался в том, что клиенту сначала нужно загрузить фактическую страницу, прежде чем она будет перенаправлена на страницу входа (в случае, конечно, 401).
Например, у меня есть две страницы a.html и b.html. Если клиент просматривает страницу a.html, и через некоторое время его токен истекает, сначала ему нужно загрузить b.html, который выполнит запрос ajax в фоновом режиме (см. Выше), а затем я смогу перенаправить его на страницу входа в систему:
a.html (200) -> token expired -> b.html (200) -> login.html (200)
До сих пор я использовал такой стиль обработки ошибок в каждом приложении REST, которое мы написали. То, что я хотел бы видеть, например,:
a.html (200) -> token expired -> login.html (200)
, но это потребовало бы, например, жесткого кодирования Логин URL страницы на стороне сервера фильтр и, как правило, связывая некоторую логику в стороне сервера кода.
Я уверен, что существуют лучшие способы обработки ошибок аутентификации сервера на стороне клиента, и я хотел бы узнать о них.