Shiro Session管理
Shiro 缓存管理
Shiro集成Spring
Shiro集成SpringBoot:https://blog.csdn.net/yueshutong123/article/details/80508848
Demo:https://github.com/sunzeying/shiro-imooc
学习链接:http://wiki.jikexueyuan.com/project/shiro/right.html
学习视频:https://www.imooc.com/video/16966/0
一.什么是Shiro?
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理
二.Shiro和SecuritySecurity比较
image.png三.Shiro整体架构
Authenticator : 认证器管理登录登出
Authorizer:授权器
sessionManager: Session管理器
CacheManager:缓存管理器
Cryptography :数据加密
四.Shiro认证
Shiro认证过程:
1 创建SecurityManager 环境
2 主体提交(Subject)认证
3 通过SecurityManager认证
4 通过Authenticator 认证
5 通过Realm 认证(连接数据库的桥梁)
Shiro授权过程:
1 创建SecurityManager 环境
2 主体提交(Subject)授权
3 通过SecurityManager授权
4 Realm获取角色权限数据
5 Authenticator授权
五.Shiro自定义Realm 以及是内置Realm (iniRealm / JdbcRealm)
内置Realm 之 iniRealm :
内置Realm 之JdbcRealm:
image.png自定义Realm:
image.png image.png六.Shiro加密
配置Shiro加密,完成自动加盐,自动加密:
七.通过注解的方式实现授权
requireRoles("admin"):只有具有admin的角色才能访问
requirePermissions :控制角色权限的注解,可以写入多个角色权限,推荐使用
八.Shiro过滤器
Shiro内置过滤器:
anon:不需要认证
authBasic:httpBasic
authc:需要认证之后才能访问
user:需要当前存在用户才能访问
logout:退出
perms[] :需要具备相关的权限才可以访问
roles[]: 需要具有[]内的相关权限才可以访问
ssl : 要求是安全的协议
port: 要求端口是[]中的
九.Shiro会话管理
SessionManager,SessionDAO
Redis实现Session共享
Redis实现Session共享存在的问题
十.Shiro 自动登录
用户的自动登录功能,顾名思义就是当用户在网站登录后,关闭了浏览器或者服务器重启了在下一次用户访问该网站时能自动将上次用户的登录信息取出来并立即登录,而不再需要用户去做登录操作。
Subject subject = SecurityUtils.getSubject();
if (!subject.isAuthenticated() && subject.isRemembered()) {
Object principal = subject.getPrincipal();
if (null != principal) {
User user = userSvc.getByUsername(String.valueOf(principal));
String password = user.getPassword();
UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), password);
token.setRememberMe(true);
subject.login(token);//登录
}
}
网友评论