- core:
- Новое: добавлен модуль `API Key`. **[Важно]**
- Новое: добавлен модуль реализации `TOTP`. **[Важно]**
- Переработка: переработан модуль `TempToken`, добавлен механизм обратного поиска токена по значению. **[Важно]**
- Обновление: переработаны стратегии чтения и записи контекста `SaTokenContext`. **[Важно]**
- Новое: добавлен модуль Mock-контекста. **[Важно]**
- Удалено: удалён модуль второго уровня контекста.
- Новое: добавлен пример использования в асинхронных сценариях. **[Важно]**
- Новое: добавлен класс-инструмент для кодирования `Base32`.
- Новое: добавлены функции обработки политики CORS для унифицированного решения задачи кросс-доменного доступа.
- Новое: метод `renewTimeout` проверяет актуальность информации о токене при продлении срока действия.
- Новое: глобальная конфигурация `cookieAutoFillPrefix`: автоматическое заполнение префикса токена в режиме cookie.
- Новое: глобальная конфигурация `rightNowCreateTokenSession`: создание сессии токена при входе.
- Улучшение: оптимизирован алгоритм получения `Token-Session`, уменьшено количество обращений к кэшу.
- Новое: класс `SaLoginParameter` поддерживает конфигурацию `SaCookieConfig` для настройки параметров cookie.
- Изменение: порядок регистрации фильтра проверки брандмауэра изменён на -102.
- Новое: методы регистрации `hook` в брандмауэре `registerHookToFirst` и `registerHookToSecond` для более гибкого управления порядком выполнения `hook`.
- плагины: - Новое: плагин `sa-token-quick-login` поддерживает аутентификацию посредством `Http Basic`.
- Юнит-тесты:
- Дополнено: добавлены юнит-тесты для модуля `Temp Token`.
- Документация:
- Дополнено: добавлен список спонсоров.
- Исправлено: исправлены неверные примеры зависимостей в документации по интеграции с `Thymeleaf`.
- Исправлено: исправлены ошибки описания в разделе `unionid`.
- Улучшено: уточнено описание шагов единого выхода в режиме SSO.
- Новое: добавлены инструкции по просмотру cookie в документации по аутентификации.
- Новое: добавлены примечания к режиму работы с несколькими аккаунтами: изменение типа входа во время выполнения недопустимо.
- Новое: добавлены вопросы и ответы по режиму работы с несколькими аккаунтами: как определить, какой аккаунт используется при входе.
- Новое: добавлены вопросы и ответы: решение проблемы ошибок при интеграции Sa-Token с низкими версиями `SpringBoot (<2.2.0)`.
- Новое: добавлены вопросы и ответы: как вернуться на предыдущую страницу после входа в систему в проектах с единой архитектурой.
- Новое: добавлены вопросы и ответы: как интегрировать Sa-Token с Redis для работы в кластере.
- Новое: добавлены вопросы и ответы: как настроить способ чтения токена в пользовательском фреймворке.
- Новое: добавлены вопросы и ответы: причины, по которым изменение файла `hosts` может не сработать.
- Новое: добавлены вопросы и ответы: как защититься от атак CSRF.- Новое: добавлен раздел "Асинхронный & Mock контекст".
- Обновление: обновлен раздел "Руководство по созданию пользовательского SaTokenContext".
- core:
- Исправление: исправлено пустое значение указателя для `StpUtil.setTokenValue("xxx")` и `loginParameter.getIsWriteHeader()`. fix: [#IBKSM0](https://gitee.com/dromara/sa-token/issues/IBKSM0)
- Исправление: значение по умолчанию для `SaDisableWrapperInfo.createNotDisabled()` изменено на -2 для обеспечения совместимости с предыдущими версиями.
- Новое: добавлен плагинный механизм на основе SPI. **[Важно]**
- Переработка: переработан модуль JSON-конвертации. **[Важно]**
- Новое: добавлен модуль сериализации, контролирующий сериализацию `Object` и `String`. **[Важно]**
- Переработка: переработан модуль фаервола, добавлен механизм hooks. **[Важно]**
- Новое: добавлены проверки запрещенных символов в пути запроса, проверка Host, проверка метода запроса, проверка заголовков запроса и параметров запроса. Переработан алгоритм проверки символа перебора директорий.
- Переработка: переработан модуль `SaTokenDao`, разделены операции сериализации и хранения. **[Важно]**
- Переработка: переработаны классы реализации по умолчанию для `SaTokenDao`, оптимизированы внутренние механизмы.
- Новое: конфигурация `isLastingCookie` теперь поддерживается в глобальной конфигурации.
- Переработка: переработаны классы `SaLoginModel` и `TokenSign` на `SaLoginParameter` и `SaTerminalInfo`. **[Не совместимо с предыдущими версиями]**
- Новое: добавлено поле `extraData` для расширения данных в `SaTerminalInfo`.
- Новое: конфигурация `isConcurrent`, `isShare`, `maxLoginCount` и `maxTryTimes` теперь поддерживается в `SaLoginParameter`. - Новое: добавлен класс `SaLogoutParameter` для управления деталями выхода из сессии. **[Важно]**
- Новое: добавлен метод `StpLogic.isTrustDeviceId` для проверки доверия устройства.
- Новое: добавлены методы `StpUtil.getTerminalListByLoginId(loginId)` и `StpUtil.forEachTerminalList(loginId)` для упрощенного управления сессиями для одного аккаунта.
- Обновление: конфигурация подписи параметров API теперь поддерживает пользовательские алгоритмы хэширования.
- Новое: добавлено аннотирование `@SaCheckSign` для проверки подписи параметров API.
- Новое: добавлен модуль подписи параметров API для поддержки нескольких приложений. **[Важно]**
- Переработка: значение по умолчанию для глобальной конфигурации `is-share` изменено на false. **[Не совместимо с предыдущими версиями]**
- Переработка: при удалении пользователя сессия теперь по умолчанию удаляет соответствующий объект `token-session`.
- Оптимизация: оптимизированы API для выхода из сессии.
- Переработка: значение по умолчанию для типа устройства при входе изменено на DEF. **[Неразрывная совместимость]**
- Реконструкция: `BCrypt` помечен как `@Deprecated`.
- Новое: `sa-token-quick-login` поддерживает `SpringBoot3` проекты. fix: [#IAFQNE](https://gitee.com/dromara/sa-token/issues/IAFQNE), [#673](https://github.com/dromara/Sa-Token/issues/673)
- Новое: в `SaTokenConfig` добавлены конфигурации `replacedRange`, `overflowLogoutMode`, `logoutRange`, `isLogoutKeepFreezeOps`, `isLogoutKeepTokenSession`.
- OAuth2: - Реконструкция: реконструирован плагин `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` сериализации.
- Документация:
- Новое: добавлен раздел QA "Как предотвратить конфликты при использовании одного Redis несколькими проектами?".
- Улучшение: добавлены пропущенные конфигурации для модуля OAuth2.
- Улучшение: улучшена документация краткого описания OAuth2.
- Улучшение: улучшена документация раздела "SSO пользовательских данных синхронизации / миграции".
- Исправление: добавлена документация по структуре проекта.
- Новое: добавлен раздел "Параметры входа и выхода".
- Улучшение: улучшены подсказки кнопки "Техническая помощь".
- Новое: добавлен файл `preview-doc.bat` для запуска предварительного просмотра документации.
- Улучшение: улучшена документация интеграции Redis.
- Новое: добавлен пример операции поиска сессии одного пользователя.
- Новое: добавлен раздел с описанием API для вынужденного выхода пользователя. - Новое: добавлен раздел с описанием пользовательских плагинов сериализации.
- Другое:
- Новое: добавлен `sa-token-demo/pom.xml` для быстрого импорта всех демонстрационных проектов в IDEA.
- Удалено: удалены ненужные файлы `.gitignore`.
- Реконструкция: реконструирован плагин `sa-token-solon-plugin`.
- Новое: добавлен пример входа с помощью устройства-локатора.
- core:
- Новое: поддержка пользовательских свойств Cookie. исправление: [#693](https://github.com/dromara/Sa-Token/issues/693) **[важно]**
- Новое: стратегия защиты от DDoS (`SaFirewallStrategy`) проверяет путь запроса на наличие в черном списке, незаконных символов и белый список. **[важно]**
- Исправлено: добавлена проверка пути запроса на наличие символа ";". ссылка: [Sa-Token полная фильтрация URL](https://mp.weixin.qq.com/s/77CIDZbgBwRunJeluofPTA) **[фиксация уязвимости]**
- Исправлено: исправлено проблемное поведение при автоматическом продлении сессии после входа пользователя. исправление: [#IA8U1O](https://gitee.com/dromara/sa-token/issues/IA8U1O)
- Улучшено: оптимизация проверки и продления времени активности, теперь это происходит один раз за каждый запрос.
- Исправлено: исправлены неверные комментарии метода `SaFoxUtil.joinSharpParam`.
- Новое: модуль блокировки теперь поддерживает реальное время получение данных из базы данных.
- SSO:
- Улучшено: пример кода SSO теперь использует Sa-Token фильтр вместо стандартного кросс-доменного решения.
- Новое: добавлен раздел "SSO интеграция — режим без SDK и проекты не на Java" в документацию.
- Новое: добавлены рекомендации по обработке некоторых исключений в разделе "Различные ключи безопасности для разных клиентов SSO", исправление: [#IAFZXL](https://gitee.com/dromara/sa-token/issues/IAFZXL)
- Удалено: удалены некоторые необязательные части кода в демонстрационной версии SSO.
- OAuth2:
- Новое: тестовая страница для клиента OAuth2. **[важно]**
- Новое: реализован UnionId. **[важно]**
- Новое: пример и документация для разделения серверной и клиентской частей OAuth2. **[важно]**
- Новое: проверка случайного значения nonce в режиме OIDC. объединение: [pr311](https://gitee.com/dromara/sa-token/pulls/311)
- Исправлено: исправлено имя метода `deleteGrantScope(String state)` на `deleteState(String state)`.
- Исправлено: исправлено некорректное использование глобальной конфигурации `sa-token.oauth2-server.oidc.iss`.
- Новое: добавлены методы отзыва refresh token: `revokeRefreshToken`, `revokeRefreshTokenByIndex`.
- Новое: добавлено поле `createTime` для моделей `CodeModel`, `AccessTokenModel`, `RefreshTokenModel`, `ClientTokenModel` для записи времени создания данных.
- Новое: добавлено поле `grantType` для моделей access token и client token для записи типа авторизации.
- Новое: добавлены методы `SaOAuth2Util.getCode` и другие для более удобного получения и проверки кода авторизации.
- плагины:
- Новое: добавлен плагин `sa-token-freemarker` для интеграции с движком шаблонов Freemarker. исправление: [#651](https://github.com/dromara/sa-token/issues/651) **[важно]**
- Новое: добавлен плагин `sa-token-spring-el` для поддержки аутентификации через SpEL выражения. исправление: [#IB3GBB](https://gitee.com/dromara/sa-token/issues/IB3GBB), исправление: [#IAIXSL](https://gitee.com/dromara/sa-token/issues/IAIXSL), исправление: [#I9P24F](https://gitee.com/dromara/sa-token/issues/I9P24F) **[важно]**
- документация:
- Новое: добавлен пример интеграции с MongoDB. благодарность @lilihao за предоставленный пример. объединение: [pr322](https://gitee.com/dromara/sa-token/pulls/322) **[важно]**
- Новое: добавлены ссылки на видеоуроки "fox говорит о технологии".
- Новое: добавлены ссылки на видеоуроки по подписям API (канал Bilibili "Grab Frog Master").
- Улучшено: добавлен кнопочный интерфейс для отправки запросов на главной странице документации.
- Другое: дополнен список спонсоров и добавлены ссылки на проект Dromara.
- Новое: добавлены замечания по использованию Redis в Spring Boot 3.x. исправление: [#688](https://github.com/dromara/Sa-Token/issues/688)
- Новое: добавлен бейдж G-Star на сайте Gitcode.
- Исправлено: исправлены примеры конфигураций OAuth2.
- Новое: добавлены ссылки на аккаунты YouTube.
- Новое: добавлены данные о членах команды.
- Основной:
- Улучшение: рефакторинг основного уровня аутентификации с использованием аннотаций, теперь поддерживаются пользовательские аннотации для аутентификации. **[Важно]**
- Исправление: исправлено неправильное чтение фреймворка при отправке одноименного `Cookie` с фронта.
- Плагины:
- Исправление: исправлена проблема с некорректным отловом плагина `sa-token-quick-login`.
- SSO:
- Улучшение: оптимизация примера разделения front-end и back-end в sso-server.
- Улучшение: оптимизация процесса перехода при разделении front-end и back-end в sso-server.
- OAuth2:
- Рефакторинг: полное рефакторинг модуля `sa-token-oauth2`. **[Важно]** **[Недопустимое обратное совместимость]**
- Новое: поддержка пользовательских обработчиков `scope`. **[Важно]**
- Новое: поддержка пользовательского типа `grant_type`. **[Важно]**
- Новое: добавление уровней для `scope`. **[Важно]**
- Новое: поддержка протокола OIDC. **[Важно]**
- Новое: поддержка алгоритма генерации `openid` по умолчанию. **[Важно]**
- Новое: поддержка аннотаций для аутентификации OAuth2. **[Важно]**
- Исправление: добавлены правила проверки параметра `redirect_url`: запрещены символы @ и * за исключением последнего символа. Связанный [issue](https://github.com/dromara/Sa-Token/issues/529) **[Важно]**
- Улучшение: улучшено описание кода и сообщения об ошибках.
- Улучшение: добавлена поддержка передачи данных клиента через HTTP Basic.
- Улучшение: добавлена поддержка передачи `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`.
- Документация:
- Новое: добавлено описание структуры данных.
- Новое: добавлено описание различных страниц входа для разных клиентов.
- Улучшение: улучшено описание примера [хранения прав доступа в кэше].
- Новое: добавлен пример миграции из Shiro, Spring Security и JWT. **[Важно]**