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 обычно требуется сохранить последовательность, что невозможно при использовании properties (наследуется от 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 (получение salt из второй колонки SQL-запроса), external (требуется наследование JdbcRealm и переопределение 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 # рекомендуется включить shiro.cookie.max-age=31536000 # 1 год shiro.cookie.secure=false # безопасная передача куки shiro.cookie.version=-1


shiro.session.active-sessions-cache-name=shiro-acciveSessionCache 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 # включить планировщик проверки сессии


**О планировщике для проверки сессии**

По умолчанию используется `ExecutorServiceSessionValidationScheduler`, который реализован с использованием API пакета `java.util.concurrent`.
Если в classpath найден `Quartz`, то используется `QuartzSessionValidationScheduler`. Для этого необходимо добавить зависимость:
org.apache.shiro shiro-quartz ${shiro.version} ```

Также можно настроить собственный 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 или других распределенных кэшей, чтобы заменить стандартную конфигурацию. Аналогично можно настроить `Realm`, `CredentialsMatcher`, `SessionDAO` и другие компоненты, используя Bean.**Наконец, работа будет продолжена, и я найду время, чтобы сделать демо. В случае недостатков****Наконец, работа будет продолжена, а также я найду время, чтобы сделать демонстрацию. В случае недостатков, пожалуйста, сообщите об этом.**

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

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

Введение

Интеграция Apache Shiro с Spring Boot. Развернуть Свернуть
Java и 2 других языков
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