предисловие
Запишите разделение интерфейса и сервера — стратегию обновления тайм-аута токена!
сценарий спроса
Вчера написал заметкуFront-end и back-end приложения для разделения — передача информации о пользователях представилtoken
Механизм аутентификации обсуждался с несколькими друзьями группы, у некоторых студентов возникло такое сомнение:token
Не работает, что мне делать? Вынуждены быть направлены на страницу входа?
На самом деле, теоретически, если это активный пользователь,token
После сбоя, если пользователь работает с формой и внезапно перенаправляется на страницу входа, взаимодействие с пользователем слишком плохое.
Цели
- продлевать
token
Дата истечения срока годности - активные пользователи в
token
По истечении срока действия обновлять динамически без ведома пользователя.token
, чтобы быть всегда онлайн - неактивные пользователи в
token
Когда он истечет, перейдите прямо на страницу входа
поле возврата логина
Как оформитьtoken
, пожалуйста, смотрите предыдущий твит, я не буду вводить здесь слишком много. Сначала посмотрите на данные, возвращаемые интерфейсом входа в систему, следующим образом:
@Data
public class LoginVo implements Serializable {
private static final long serialVersionUID = 6711396581310450023L;
//...省略部分业务字段
/**
* token令牌 过期时间默认15day
*/
private String jwt;
/**
* 刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token
*/
private String refreshJwt;
/**
* token过期时间戳
*/
private Long tokenPeriodTime;
}
Пожалуйста, обратитесь к комментариям, чтобы узнать значение конкретных возвращаемых полей, и вот краткое описание:
- jwt: отправляется, когда пользователь нормально обращается к интерфейсу
token
, срок действия установлен на более длительный срок, 15 дней - updateJwt: обновить
token
Срок годности можно установитьjwt
дважды или даже дольше для динамического обновленияtoken
При подаче подтверждения - время токена:
token
Отметка времени истечения срока действия, внешний интерфейс должен активно определять, истек ли срок его действия, прежде чем каждый раз вызывать интерфейс, и отправлять, если он истекает.refreshJwt
доступtoken
Обновленный интерфейс обновлен
Токен динамического обновления
обнаружен передний конецtoken
По истечении срока принестиrefreshJwt
Доступ к фоновому обновлениюtoken
Интерфейс сервера все еще действителен в перехватчикеrefreshJwt
Выполнить проверку подлинности синтаксического анализа
- если
refreshJwt
Он также истек, что указывает на то, что срок действия входа истек, и вынужден перейти на страницу входа. - если
refreshJwt
Если он все еще действителен, будет выпущен новый.token
Сзади, передняя часть использует последниеtoken
сделать запрос интерфейса
Суммировать
- Если активный пользователь, разрешите ему
refreshJwt
срок годности сtoken
В течение этого периода времени разница между сроками экспирации постоянно обновляется динамически.token
, чтобы он оставался в системе, не зная об этом - Если пользователь не активен, в
refreshJwt
Когда время истечения истекло, а система все еще не используется, она будет считаться неактивным пользователем и в это время должна быть перенаправлена на страницу входа.
Наконец
Длина короткая, в основном продолжение предыдущейFront-end и back-end приложения для разделения — передача информации о пользователях Оставьте резюме оставшихся вопросов. Если у вас есть лучший способ, пожалуйста, оставьте сообщение и дайте мне знать, спасибо. Оригинальные статьи будут время от времени обновляться в дальнейшем, приглашаем обратить внимание на публичный аккаунт «Чжан Шаолинь»!