Адрес внешнего интерфейса: https://github.com/wang926454/VueStudy/tree/master/VueStudy08-JWT.
Если у вас есть какие-либо вопросы, отсканируйте код и присоединитесь к группе QQ для общения: 779168604.
- Сначала отправьте имя пользователя и пароль пользователю/логину для входа в систему. В случае успеха будет возвращен зашифрованный AccessToken . В случае неудачи будет возвращена ошибка 401 (учетная запись или пароль неверны).
- Просто возьмите с собой этот AccessToken для будущих посещений.
- Процесс аутентификации в основном перезаписывает входной фильтр JWTFilter Широ ( BasicHttpAuthenticationFilter ), чтобы определить, содержит ли заголовок запроса поле авторизации .
- Если да, выполните аутентификацию и авторизацию входа в систему с помощью токена Широ (каждый запрос на доступ пользователя, требующий разрешения, должен добавлять поле авторизации в заголовок для хранения AccessToken ), если нет, используйте прямой доступ в качестве посетителя (при наличии контроля разрешений). , доступ посетителей будет перехвачен)
Большинство из них решают эту проблему в виде MD5 + соль (подробности от Baidu) я использую AES-128 + Base64 для шифрования пароля в виде учетная запись + пароль. Поскольку учетная запись уникальна, одинаковая структура не появится. . Проблема секретного пароля.
Первоначально JedisUtil внедрялся напрямую как Bean . Каждый раз, когда он используется, его можно внедрить напрямую
@Autowired
. Однако после переписывания CustomCache Широ внедрение JedisUtil было невозможно, поэтому его заменили на статическое внедрение в JedisPool. Пул соединений . Класс инструмента JedisUtil по-прежнему напрямую вызывает статический метод. Нет необходимости в внедрении@Autowired
- После прохождения аутентификации при входе возвращается информация AccessToken ( текущая временная метка и номер учетной записи сохраняются в AccessToken ).
- В то же время установите RefreshToken в Redis с учетной записью в качестве ключа и значением в качестве текущей отметки времени (время входа в систему).
- Теперь во время аутентификации срок действия AccessToken не должен быть истек, и соответствующий RefreshToken должен существовать в Redis , а временная метка RefreshToken должна соответствовать временной метке в информации AccessToken до прохождения аутентификации. Это может обеспечить управляемость JWT.
- Если вы снова войдете в систему и получите новый AccessToken , старый AccessToken не сможет быть аутентифицирован, поскольку информация о временной метке RefreshToken, хранящаяся в Redis, будет соответствовать только временной метке, содержащейся в последней сгенерированной информации AccessToken , поэтому каждый пользователь может использовать только последний AccessToken. сертификация
- RefreshToken Redis также можно использовать для определения того, находится ли пользователь в сети. Если Redis RefreshToken удален, AccessToken, соответствующий этому RefreshToken, больше не сможет проходить аутентификацию. Это эквивалентно контролю входа пользователя и удалению пользователя. .
- Срок действия самого AccessToken составляет 5 минут (настраивается в файле конфигурации), а срок действия RefreshToken — 30 минут (настраивается в файле конфигурации).
- По прошествии 5 минут после входа в систему текущий AccessToken истечет. Если вы снова используете AccessToken для доступа к JWT, будет выдано исключение TokenExpiredException , указывающее, что срок действия токена истек.
- Начните с определения необходимости обновления AccessToken . Redis запрашивает, существует ли RefreshToken текущего пользователя и соответствует ли временная метка, передаваемая этим RefreshToken, временной метке, переносимой истекшим AccessToken.
- Если он существует и является согласованным, обновите AccessToken, установите время истечения срока действия на 5 минут (настраивается в файле конфигурации), в качестве временной метки самую последнюю временную метку, а также установите временную метку в RefreshToken на самую последнюю временную метку и обновите срок действия. время снова до 30. Срок действия в минутах (настраивается в файле конфигурации).
- Наконец, обновленный AccessToken сохраняется в поле авторизации в заголовке ответа и возвращается (интерфейсная часть получает и заменяет его и использует новый AccessToken для доступа в следующий раз).
Сначала настройте файл srcmainresourcesgeneratorgeneratorConfig.xml (конфигурация по умолчанию находится в обратном пакете на нижнем уровне исходного пакета) и выполните его в окне командной строки каталога уровня pom.xml ( то есть в корневом каталоге проекта) (Предполагается, что mvn настроен) (IDEA можно запустить напрямую, дважды щелкнув в окне плагинов Maven)
mvn mybatis-generator:generate
先设置Content - Type为application / json
然后填写请求参数帐号密码信息
进行请求访问,请求访问成功
点击查看Header信息的Authorization属性即是Token字段
访问需要权限的请求将Token字段放在Header信息的Authorization属性访问即可
Token的自动刷新也是在Token失效时返回新的Token在Header信息的Authorization属性