1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/millinch-spring-boot-shiro

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Apache Shiro интеграция с Spring Boot

Статус сборки

GitHub: https://github.com/johntostring/spring-boot-shiro

Использование

mvn clean install

pom.xml

<dependency>
    <groupId>com.millinch</groupId>
    <artifactId>spring-boot-shiro-starter</artifactId>
    <version>1.0.0</version>
</dependency>

Быстрый старт

Официально рекомендовано использовать YAML для конфигураций, также рекомендую использовать YAML, так как при конфигурировании filter-chain-definitions, обычно требуется сохранение последовательности (наследие от Hashtable).

Далее будут указаны значения по умолчанию для конфигураций, вы можете настроить только те параметры, которые вам необходимы.

Подробное описание использования Spring Boot можно найти в официальной документации, либо просмотреть примеры проектов на GitHub.

Сначала предоставляется конфигурация JdbcRealm по умолчанию, если это не удовлетворяет ваши требования, то следует настроить свой Realm:

shiro:
  realm-class:  #по умолчанию пустое значение, полное имя класса com.your.company.YourRealm

1. Конфигурация DataSource

Пример для MySQL, после добавления зависимости JDBC-драйвера, настройте DataSource:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/yourdbname
    username: #вы знаете
    password: #вы знаете
    driver-class-name: com.mysql.jdbc.Driver

2. Включение JdbcRealm

Установите shiro.realm.jdbc.enabled в true, чтобы избежать поиска пользовательского realm-class, затем настройте SQL запросы.

Конфигурация по умолчанию и её описание:

shiro:
  realm:
    jdbc:
      enabled: true
      authentication-query: SELECT password FROM sys_user where user_name = ? #получение пароля по имени пользователя
      salt: no_salt #допустимые значения: no_salt, crypt(не реализовано в исходниках), column(второй столбец SQL запроса), external(требуется переопределение метода getSaltForUser())
      user-roles-query: SELECT r.code
                        FROM sys_user_role ur
                        LEFT JOIN sys_role r ON r.id = ur.role_id
                        LEFT JOIN sys_user u ON ur.user_id = u.id AND u.user_name = ? #получение ролей по имени пользователя
      permissions-query: SELECT re.permission
                         FROM sys_role_resource rr
                         LEFT JOIN sys_resource re ON rr.resource_id = re.id
                         LEFT JOIN sys_role r ON rr.role_id = r.id
                         WHERE r.code = ? #получение прав доступа по роли
  login-url: /login #URL входа
  success-url: /index #URL успешной авторизации
  unauthorized-url: /unauthorized #URL перенаправления при попытке доступа к защищённому ресурсу
  sign-in:
    user-param: username #параметр имени пользователя
    password-param: password #параметр пароля
    remember-me-param: rememberMe #параметр запомнить меня
  hash-iterations: 1 #количество итераций хэширования, должно быть хотя бы 1
  hash-algorithm-name: MD5 #название алгоритма хэширования, допустимые значения: MD2/SHA-1/SHA-256/SHA-384/SHA-512
  filter-chain-definitions: #значение по умолчанию пустое, обычно следующее:
    /login: authc
    /logout: logout
    /favicon.ico: anon
    /index: anon
    /assets/**: anon
    /**: authc

Куки

shiro.cookie.cipher-key= #ключ шифрования для симметричного шифрования (по умолчанию), если пустое значение, Shiro автоматически предоставляет ключ
shiro.cookie.decryption-cipher-key= #обязательно для асимметричного шифрования
shiro.cookie.encryption-cipher-key= #обязательно для асимметричного шифрования
shiro.cookie.name=rememberMe
shiro.cookie.http-only=true #рекомендуется установить в true
shiro.cookie.max-age=31536000 #1 год
shiro.cookie.secure=false #защищённые cookies
shiro.cookie.version=-1

Сессии

shiro.session.active-sessions-cache-name=shiro-activeSessionCache
shiro.session.delete-invalid-sessions=true
shiro.session.global-session-timeout=36000 #время жизни сессии, по умолчанию 1 час
shiro.session.id-generator=org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator #можно указать своё реализование
shiro.session.validation-interval=36000 #период проверки сессий каждые 1 час
shiro.session.validation-scheduler-enabled=true #включено ли планирование проверки сессий

О Scheduler для проверки сессий

По умолчанию используется ExecutorServiceSessionValidationScheduler, который является реализацией API Java Concurrency.

Если в classpath найден Quartz, будет использоваться QuartzSessionValidationScheduler. Для этого добавьте зависимость:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-quartz</artifactId>
    <version>${shiro.version}</version>
</dependency>

Вы также можете настроить свой SessionValidationScheduler:

@Bean(name = "sessionValidationScheduler")
public SessionValidationScheduler yourSessionValidationScheduler() {
    return new YourSessionValidationScheduler();
}

Кэш

shiro.ehcache.cache-manager-config-file=classpath:org/apache/shiro/cache/ehcache/ehcache.xml #конфигурационный файл для Ehcache

CacheManager

По умолчанию используется MemoryConstrainedCacheManager, что не рекомендуется для продакшена.

Если в classpath найден org.apache.shiro.cache.ehcache.EhCacheManager, будет использоваться EhCacheManager. Для этого добавьте зависимость:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-ehcache</artifactId>
    <version>${shiro.version}</version>
</dependency>

Аналогично, CacheManager может быть настроен на использование других реализаций, таких как Redis для распределенного кэша, чтобы заменить значения по умолчанию. Также могут быть настроены Bean для замены значений по умолчанию для Realm, CredentialsMatcher, SessionDAO и других компонентов.

Наконец, этот проект будет продолжать развиваться, демонстрационный проект будет создан в ближайшее время. Любые недочёты просьба сообщать.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Интеграция Apache Shiro с Spring Boot. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/millinch-spring-boot-shiro.git
git@api.gitlife.ru:oschina-mirror/millinch-spring-boot-shiro.git
oschina-mirror
millinch-spring-boot-shiro
millinch-spring-boot-shiro
master