API Key
. [Важно]
TOTP
. [Важно]
TempToken
, добавлен механизм обратного поиска токена по значению. [Важно]
SaTokenContext
. [Важно]
Base32
.renewTimeout
проверяет актуальность информации о токене при продлении срока действия.cookieAutoFillPrefix
: автоматическое заполнение префикса токена в режиме cookie.rightNowCreateTokenSession
: создание сессии токена при входе.Token-Session
, уменьшено количество обращений к кэшу.SaLoginParameter
поддерживает конфигурацию SaCookieConfig
для настройки параметров cookie.hook
в модуле защиты добавлены registerHookToFirst
и registerHookToSecond
для более гибкого управления порядком.sa-token-quick-login
поддерживает аутентификацию по протоколу Http Basic
.Temp Token
.Thymeleaf
.unionid
.SpringBoot (<2.2.0)
.hosts
может не сработать.добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构和拆分组件,防火墙新增钩子机制 Переводим оставшиеся китайские фразы: Релиз Sa-Token v1.41.0, значительная重构和拆分组件,防火墙新增钩子机制 Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Переводим оставшиеся китайские фразы: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Переводим оставшиеся китайские фразы: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных комментариев или интерпретаций, сохраняя исходное форматирование и разметку: Релиз Sa-Token v1.41.0, значительная重构 и разбиение компонентов, в брандмауэр добавлены механизмы钩子 Теперь текст будет точным переводом без добавления собственных
StpUtil.setTokenValue("xxx")
и loginParameter.getIsWriteHeader()
. fix: #IBKSM0
SaDisableWrapperInfo.createNotDisabled()
изменено на -2 для обеспечения совместимости с предыдущими версиями.Object
и String
. [Важно]
SaTokenDao
, разделены операции сериализации и хранения. [Важно]
SaTokenDao
, оптимизированы внутренние механизмы.isLastingCookie
теперь поддерживается в глобальной конфигурации.SaLoginModel
и TokenSign
на SaLoginParameter
и SaTerminalInfo
. [Не совместимо с предыдущими версиями]
extraData
для расширения данных в SaTerminalInfo
.isConcurrent
, isShare
, maxLoginCount
и maxTryTimes
теперь поддерживается в SaLoginParameter
. - Новое: добавлен класс SaLogoutParameter
для управления деталями выхода из сессии. [Важно]
StpLogic.isTrustDeviceId
для проверки доверия устройства.StpUtil.getTerminalListByLoginId(loginId)
и StpUtil.forEachTerminalList(loginId)
для упрощенного управления сессиями для одного аккаунта.@SaCheckSign
для проверки подписи параметров API.is-share
изменено на false. [Не совместимо с предыдущими версиями]
token-session
.BCrypt
помечен как @Deprecated
.sa-token-quick-login
поддерживает SpringBoot3
проекты. fix: #IAFQNE, #673
SaTokenConfig
добавлены конфигурации replacedRange
, overflowLogoutMode
, logoutRange
, isLogoutKeepFreezeOps
, isLogoutKeepTokenSession
.sa-token-oauth2
, процесс регистрации аннотации-обработчика изменен на загрузку плагина SPI.sa-token-serializer-features
для реализации различных схем сериализации пользовательских наборов символов.sa-token-fastjson
.sa-token-fastjson2
.sa-token-snack3
.sa-token-caffeine
.sa-token-json-test
JSON.sa-token-serializer-test
сериализации.preview-doc.bat
для запуска предварительного просмотра документации.sa-token-demo/pom.xml
для быстрого импорта всех демонстрационных проектов в IDEA..gitignore
.sa-token-solon-plugin
.SaFirewallStrategy
) проверяет путь запроса на наличие в черном списке, незаконных символов и белый список. [важно]
SaFoxUtil.joinSharpParam
.deleteGrantScope(String state)
на deleteState(String state)
.sa-token.oauth2-server.oidc.iss
.revokeRefreshToken
, revokeRefreshTokenByIndex
.createTime
для объектов CodeModel
, AccessTokenModel
, RefreshTokenModel
, ClientTokenModel
для записи времени создания этих объектов.grantType
для access token и client token для записи типа авторизации.SaOAuth2Util.getCode
и другие для более удобного получения и проверки кода авторизации.Основной:
Cookie
с фронта.Плагины:
sa-token-quick-login
.SSO:
OAuth2:
sa-token-oauth2
. [Важно] [Недопустимое обратное совместимость]
scope
. [Важно]
grant_type
. [Важно]
scope
. [Важно]
openid
по умолчанию. [Важно]
redirect_url
: запрещены символы @ и * за исключением последнего символа. Связанный issue [Важно]
access_token
и client_token
через Bearer Token.scope
изменён на List
.SaOAuth2Strategy
, определены некоторые стратегии создания токенов.addAllowUrls
и addContractScopes
для упрощения кода конструктора SaClientModel
.SaOAuth2Dao
для работы с базой данных.SaOAuth2DataLoader
для загрузки данных.SaOAuth2DataGenerate
для создания данных.SaOAuth2DataConverter
для преобразования данных.SaOAuth2DataResolver
для анализа данных.SaOAuth2Handle
-> SaOAuth2ServerProcessor
для более удобного переопределения логики.PastToken
-> LowerClientToken
.state
, повторное использование одного и того же значения state
недопустимо.SaOAuth2Util
для более удобного вторичного использования.ClassType
.sa-token-oauth2
.Документация:
SaSession
, когда параметр StpUtil.getSessionByLoginId(xx)
равен null.SpringBoot 3.x
будет выдано сообщение о невозможности запуска. (Благодарим Uncarbon
за предоставленный PR)hasXxx
теперь всегда возвращают true или false, а не выбрасывают исключение.InvalidContextException
в SaTokenContextException
. [Обеспечено обратную совместимость]
getCode()
из класса NotPermissionException
. [Удалены устаревшие API]
SaTokenException
: throwBy-
>notTrue
, throwByNull-
>notEmpty
. [Обеспечено обратное совместимое использование]
SessionId
в методе StpUtil.getSessionBySessionId
пустой, будет выброшено исключение, вместо возврата null. [Не обеспечивает обратную совместимость]
Http Digest
.Http Basic
. [Обеспечено обратное совместимое использование]
StpUtil.getLoginDeviceByToken(xxx)
, который позволяет получить тип устройства входа для любого токена.StpUtil.getTokenLastActiveTime()
, который позволяет получить время последней активности текущего токена.Account-Session
был установлен глобальным значением, даже если указанное значение было меньше.Token-Session
теперь будет таким же как срок действия токена, а не глобальное значение.isCheckNonce
из класса SaSignConfig
. [Не обеспечивает обратную совместимость]
SaSignTemplate#checkRequest
.StpUtil.getLoginId(T defaultValue)
.autoRenewTimeout
: автоматическое продление срока действия токена при каждом выпуске билета (в соответствии со значением глобального срока действия).isCheckSign
в классе SaSsoConfig
, которая позволяет проверять сигнатуры параметров во время локальной разработки.currSsoLogin
в классе SaSsoConfig
, которая позволяет принудительно установить адрес входа SSO для системы.sa-token-sso
переработан, код серверной и клиентской части разделён. [Важно] [Не обеспечивает обратную совместимость]
ssoLogoutCall
в currSsoLogoutCall
. [Обеспечено обратное совместимое использование]
maxRegClient
, которая позволяет контролировать количество зарегистрированных клиентов в режиме SSO 3.homeRoute
, которая позволяет указать маршрут перехода после входа через /sso/auth
без параметра redirect.checkTicketAppendData
, который позволяет добавлять информацию в ответ клиенту SSO после проверки билета.allow-url
, так как это может позволить обойти проверку. [Исправление уязвимости]
sa-token-hutool-timed-cache
, который позволяет использовать плагин кэширования TimedCache из библиотеки Hutool. [Важно]
@Autowired
на более подходящие @PostConstruct
.sa-token-jwt
. (Благодарим KonBAI за предоставленный PR)sa-token-spring-aop
.@若初995
за предоставленный pull request. [Важно]
SaFoxUtil.vagueMatch()
. [Исправление уязвимости]
SaRouter.match()
. [Исправление уязвимости]
sa-token-alone-redis
.sa-token-solon-plugin
.sa-token-three-plugin
.sa-token-solon-plugin
.sa-token-redisson-jackson2
: универсальный план интеграции Redisson (работает со Spring, Solon, JFinal и другими).sa-token-core:
getTokenSession()
будет выбрасывать исключение "не авторизован", а не возвращать null. [Недопустимо для обратной совместимости]
SaSession
добавлены поля: type
, loginType
, loginId
, token
.SaFilter
.includeList
и excludeList
глобальных фильтров сделаны публичными, а соответствующие геттеры удалены. [Недопустимо для обратной совместимости]
BeforeAuth
всех запросов теперь происходит вне зависимости от значений includeList
и excludeList
. [Недопустимо для обратной совместимости]
core
. [Важно]
User-Session
переименована в Account-Session
.getTokenTimeout(String token)
для получения времени жизни любого токена.extra
текущего StpLogic
, если нет — выводится предупреждение.-6
и -7
в классе NotLoginException
для более точного описания ошибки "не авторизован".tag
в класс TokenSign
для хранения специфических данных клиента при входе. [Важно]
SaStrategy#createStpLogic
для указания стратегий создания StpLogic
.@SaCheckOr
для множественной проверки прав доступа, где достаточно одного успешного условия. [Важно]
SaStrategy.me
в SaStrategy.instance
.activity-timeout
переименована в active-timeout
. [Важно]
active-timeout
при каждом входе. [Важно]
SaStrategy
вынесены в отдельные функциональные интерфейсы.SaTokenConfig
для каждого StpLogic
.sa-token-sso:
ticket
в режиме SSO-3.getData
для передачи произвольных параметров при получении данных в режиме SSO-3. [Важно]
sa-token.sso.secretkey=xxx
-> sa-token.sign.secret-key=xxx
. [Недопустимо для обратной совместимости]
SaSsoUtil.checkSign(req)
-> SaSignUtil.checkRequest(req)
. [Недопустимо для обратной совместимости]
sa-token.sso.mode
для выбора используемого режима SSO.ticket
.sa-token-jwt:
Другое:
.java
.sa-token-bom
для удобства управления версией при использовании sa-token.sa-token-dubbo3
.sa-token-alone-redis
на старых версиях Spring Boot из-за отсутствия свойства username
.Новые плагины:
sa-token-context-dubbo3
. Благодарность за предоставленный PR @qiudaozhang. [Важно]
Документация:
api-sign
. [Важно]
Упрощение пространств имён [Важно] [Недопустимо для обратной совместимости]
sa-token-dao-redis
-> sa-token-redis
sa-token-dao-redis-jackson
-> sa-token-redis-jackson
.sa-token-dao-redis-fastjson
-> sa-token-redis-fastjson
.sa-token-dao-redis-fastjson2
-> sa-token-redis-fastjson2
.sa-token-dao-redisson-jackson
-> sa-token-redisson-jackson
.sa-token-dao-redisx
-> sa-token-redisx
.sa-token-context-dubbo
-> sa-token-dubbo
.sa-token-context-dubbo3
-> sa-token-dubbo3
.sa-token-context-grpc
-> sa-token-grpc
.Spring Boot 3.x
, спасибо @jry
за предоставленные идеи. [Важно]
sa-token-dao-redisson-jackson
, спасибо @瘋狂的獅子Li
за внесённые изменения. [Важно]
@appleOfGray
за внесённые изменения. [Важно]
SaSignTemplate#joinParams
переименован в joinParamsDictSort
. [Не совместимо с версией ниже]
SaAnnotationInterceptor
и SaRouteInterceptor
.SaSsoHandle
был удален из модуля SSO.is-share=false
.getClientModel
.setExtra
.sa-token-sso
, начиная с 300, и кодов ошибок sa-token-jwt
, начиная с Yöntem 302. [Не совместимо вниз]Log
. [Важно]SaTokenListenerForConsolePrint
в SaTokenListenerForLog
. [Не совместимо вниз]SaFoxUtil.getRandomString()
при многопоточной работе.timeout
в плагине sa-token-dao-redis-fastjson
.session.getModel
в плагине sa-token-dao-redis-fastjson
.sa-token-quick-login
, когда маршрут игнорируется при указании его для исключения.sa-token-alone-redis
вместе с sa-token-dao-redis-fastson
.cookie.path
.SaFoxUtil.getValueByType()
добавлена поддержка преобразования типа char
.sa-token-dao-redis-fastjson2
. [Важно]
isWriteHeader
, которая контролирует запись токена в заголовок ответа после входа. [Важно]
start=0, size=-1
. [Не совместимо с версией ниже]
SaManager.getStpLogic("type")
автоматически создает и возвращает логику, если тип не существует, вместо выбрасывания исключения./sso/logout
на /sso/signout
, чтобы избежать конфликтов пути с клиентским адресом. [Не совместимо с версией ниже]
sso-server
и одного sso-client
в одном проекте в документации SSO. [Важно]
sso-server
сервисов в одном проекте в документации SSO. [Важно]
sa-token-dependencies
, который унифицирует версии зависимостей. [Важно]
SaInterceptor
. [Важно] [Недопустимость обратной совместимости]@SaIgnore
. [Важно]sa-token-dao-redis-fastjson
, благодарю @sikadai
за предоставленный PR. [Важно]sa-token-context-grpc
, благодарю @LiYiMing666
за предоставленный PR. [Важно]final
из поля tokenSignList
класса SaSession
.setTokenSignList
класса SaSession
.setValue
и setDevice
класса TokenSign
.StpLogic
при использовании нескольких аккаунтов.NullPointerException
при проверке объекта TokenSign
в классе SaSession
.NullPointerException
при работе с пустыми значениями прав доступа.StpUtil.getExtra(tokenValue, key)
для получения расширенных параметров любого токена.StpLogic#logoutByTokenValue
, уменьшен объем кода.SaTokenConfig
переименовано с isReadHead
на isReadHeader
. [Недопустимость обратной совместимости]Non-Web context cannot obtain Request
при попытке выгнать пользователя.StpLogic#getAnonTokenSession
для безопасного получения сессии токена в случае незарегистрированного пользователя. [Важно]SaApplication
для глобального хранения значений. [Важно]SaTokenListener
преобразован в модель событий, позволяющую регистрировать несколько слушателей одновременно. [Важно] [Недопустимость обратной совместимости]login(id)
класса StpUtil
больше не требует обязательной проверки состояния аккаунта, теперь требуется выполнить эту проверку самостоятельно. [Недопустимость обратной совместимости]DisableLoginException
заменено на DisableServiceException
. [Недопустимость обратной совместимости]server-url
модуля SSO для упрощения различных URL конфигураций. [Важно]ssoLogoutCall
в модуле единого входа.SaSsoHandle.checkTicket(ticket, currUri);
, теперь он не требует параметра currUri
для регистрации одного события выхода.Param.pwd
вместо строки в методе doLogin
класса SaOAuth2Handle
.SaOAuth2Util.checkClientTokenScope(clientToken, scopes)
для проверки наличия указанных областей действия у клиента.sa-token-jwt
.sa-token-jwt
изменена на hutool-jwt
, версия обновлена до 5.8.5.sa-token-jwt
преобразован в форму "Утилиты + Шаблоны", что позволяет легко переписывать части кода. [Важно]client_secret
в режиме пароля модуля sa-token-oauth2
. [Недопустимость обратной совместимости]jacoco
для повышения покрытия юнит тестами основного пакета до более чем 90%.sa-token-jfinal-plugin
. [Важно]
sa-token-jboot-plugin
(спасибо @nxstv за вклад).StpUtil.getExtra("key")
не работает корректно.sa-token-context-dubbo
: 2.7.11
-> 2.7.15
.flatten-maven-plugin
. [Важно]
quick-login
плагина в springboot 2.6.x среде из-за циклической зависимости.sa-token-spring-aop
заменена на sa-token-core
, что позволяет избежать ошибок при старте в webflux окружении.maxLoginCount
, которая ограничивает максимальное количество одновременно активных сессий одного аккаунта. [Важно]
SaTokenAction
, теперь используется SaStrategy
.sa-token-dao-redisx
. [Важно]
SaTokenListener#doLogin
получил новый параметр tokenValue
. [Не совместимо с предыдущими версиями]
2.5.12
.AjaxJson
заменены на SaResult
.SaTokenException
. [Важно]
getCode()
класса NotPermissionException
. [Не совместимо с предыдущими версиями]
sa-token-sso
. [Важно]
stpLogic.logout(loginId)
./sso/checkTicket
и /sso/logout
. [Не совместимо с предыдущими версиями]
SsoUtil.singleLogout
переименован в SsoUtil.ssoLogout
, теперь он не требует передачи секретного ключа. [Не совместимо с предыдущими версиями]
sa-token-jwt
.createLoginSession
теперь переопределяется вместо login
.SaJwtUtil
больше не скрывает информацию об ошибках и предоставляет более детализированные коды ошибок.StpLogicJwtForStyle
в StpLogicJwtForSimple
и StpLogicJwtForMix
в StpLogicJwtForMixin
.StpLogicJwtForSimple
.sa-token-jwt
для интеграции с JWT [важно]
sa-token-context-dubbo
для интеграции с Dubbo [важно]
getSaTokenDao()
для удобства переопределенияgetDeviceOrDefault
Http Basic
[важно]
SSO-Server
[важно]
частей.
SaRequest
добавлен метод getHeader(name, defaultValue)
, который используется для получения значения заголовка по умолчаниюSaRequest
добавлен метод forward
для переадресации запросаSaQuickBean
Sa-Token-Study
, где объясняются технологии, используемые в исходном коде Sa-TokenSaReactorHolder.getContext()
: content
-> context
Sa-Id-Token
, решающий задачу аутентификации при внутренних вызовах микросервисов [важно].