18 Apache Shiro

整体架构

Apache Shiro 整体架构

认证授权

Shiro 认证
Shiro 授权

引入依赖:

SimpleAccountRealm

IniRealm

新建 user.ini 文件:

JdbcRealm

引入依赖:

JdbcRealm 默认的 sql 查询语句为:

也可以设置自己的 sql 语句:

CustomReal

数据库配置 db.properties

工具类:

自定义 CustomRealm 可以参考 JdbcRealm

加密

MD5 计算方法:

数据库保存 MD5 加密后的密码,然后进行 Shiro 认证的时候设置加密方法和加密次数:

可以给 MD5 加盐:

然后在我们自定的 CustomRealm 的认证方法返回的认证信息中加入盐:

集成 Spring

添加依赖:

关于配置 SpringWeb 这部分掠过,可以查看源码 Spring Shiro Resource

我们将上面的 JDBCUtil 工具类访问数据库改造成使用 JdbcTemplate 访问:

修改 CustomRealm:

Service 实现类:

通过注解方式鉴权

添加依赖:

修改 spring-mvc.xml:

在 Controller 注解鉴权:

过滤器

除了通过注解,还可以通过过滤器来鉴权:

Controller 实现:

也可以自定义过滤器:

依旧引入:

会话与缓存管理

添加 redis 的管理工具依赖 jedis:

jedis 配置 spring-redis.xml:

新建 jedis 工具类:

会话管理

session 管理类:

由于默认的 sessionManager 会每次都访问 redis 中缓存的 session,所以需要自定义 session 访问 manager:

然后在 spring.xml 中引入:

缓存管理

主要缓存角色数据和权限数据,不用每次从数据库中读取角色和权限信息,提升程序性能。

cache 管理类 RedisCacheManager:

具体实现:

然后在 spring.xml 中引入:

记住登录

修改 spring.xml:

生成 token 时设置是否记住:

最后更新于

这有帮助吗?