• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

spring-boot-shiro: Apache Shiro integration with Spring Boot.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

spring-boot-shiro

开源软件地址:

https://gitee.com/millinch/spring-boot-shiro

开源软件介绍:

Apache Shiro integration with Spring Boot

Build Status

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

Usage

mvn clean install

pom.xml

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

QuickStart

官方推荐采用YAML的方式配置,这里我也建议使用YAML来配置,一方面是因为在配置filter-chain-definitions时,通常我们是希望保证顺序的,使用properties的方式无法保证顺序(继承自Hashtable)。后面将会列出配置的默认约定,按照你的需要,你只需要配置你想要修改的项就可以了。关于SpringBoot详细使用方式,你可以查看官方文档,或者通过Github开源地址查看一些示例项目。

首先,默认提供JdbcRealm 配置,不能满足需求的情况下再配置自定义Realm:

shiro:  realm-class:  #默认空,指定类全名com.your.company.YourRealm

1. 配置DataSource

以MySQL为例,添加好JDBC驱动依赖后,配置DataSource:

spring:  datasource:    url: jdbc:mysql://localhost:3306/yourdbname    username: #you know    password: #you know    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中第二列中获取salt), 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,将为filter chain中的每个AuthorizationFilter设置跳转URL(如果目标没有指定)  sign-in:    user-param: username #用户名参数名称    password-param: password #密码参数名称    remember-me-param: rememberMe #记住我参数名称  hash-iterations: 1 #加密迭代次数,强制设为至少1次(即使设置0或负数)  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

Cookie

shiro.cookie.cipher-key= #对称加密时使用(默认),为空则Shrio自动提供一个shiro.cookie.decryption-cipher-key= #非对称加密时必需shiro.cookie.encryption-cipher-key= #非对称加密时必需shiro.cookie.name=rememberMeshiro.cookie.http-only=true #建议开启shiro.cookie.max-age=31536000 #1年shiro.cookie.secure=false #安全传输cookieshiro.cookie.version=-1

Session

shiro.session.active-sessions-cache-name=shiro-acciveSessionCacheshiro.session.delete-invalid-sessions=trueshiro.session.global-session-timeout=36000 #Session超时时长,默认1小时shiro.session.id-generator=org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator #可指定自定义的实现shiro.session.validation-interval=36000 #每隔1小时验证Sessionshiro.session.validation-scheduler-enabled=true #是否开启定时验证Session

关于SessionValidationScheduler

默认配置ExecutorServiceSessionValidationScheduler,这是一个JDK的并发包API的实现。若在classpath发现Quartz,则自动使用QuartzSessionValidationScheduler。即添加dependency:

<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();}

Cache

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:

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

同样地,CacheManager也可以配置自定义的实现,比如Redis等分布式缓存的实现,来覆盖默认配置,其他的如Realm、CredentialsMatcher、SessionDAO同样可配置Bean来覆盖默认配置。

最后,会继续完善的,Demo也会抽时间做一个。有不足的地方请及时指出。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap