Разделение интерфейсной и серверной частей — стратегия обновления тайм-аута токена

Java

предисловие

Запишите разделение интерфейса и сервера — стратегию обновления тайм-аута токена!

сценарий спроса

Вчера написал заметку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 приложения для разделения — передача информации о пользователях Оставьте резюме оставшихся вопросов. Если у вас есть лучший способ, пожалуйста, оставьте сообщение и дайте мне знать, спасибо. Оригинальные статьи будут время от времени обновляться в дальнейшем, приглашаем обратить внимание на публичный аккаунт «Чжан Шаолинь»!