一
二
三
四
五
六 shiro 会话管理
1. 概述:
2. 会话 相关 API
Session session = SecurityUtils.getSubject().getSession();
String sessionId = session.getId().toString();
3. 会话监听器
5. Session Dao
‘ 1)SessionDao 作用:
a:可以把 Session 写到数据库中,可对 Session 进行增删改查操作。
b:介绍:‘ 2)Session Dao 类继承结构:
要配置 sessionId 生成策略:(getSessionId() )
‘ 3) 会话验证调度器:(性能不好,用的不多)
七 shiro 缓存
1. CacheManagerAware 接口
2. Realm 缓存
3. Session 缓存
八 shiro 认证 和 记住我区别
1.概述
2. 认证 和 记住我区别(认证 / 记住我 二选一)
3. 建议(不敏感网页,认证 || 记住我 == true ,即可访问)
4. 身份验证相关的
5.配置
1)list.jsp,通过 验证/记住我 登陆,都可进行访问:
2)设置记住我:
3)rememberMeManager
// 2:创建 安全管理器
@Bean
public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier(value = "realm") Realm realm,
RedisCacheManager redisCacheManager) {
DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
defaultWebSecurityManager.setRealm(realm);
//配置 redis缓存管理器,将来换成 redis 缓存管理器
defaultWebSecurityManager.setCacheManager(redisCacheManager);
defaultWebSecurityManager.setRememberMeManager(rememberMeManager());
return defaultWebSecurityManager;
}
/**
* cookie管理对象;记住我功能,rememberMe管理器
*
* @return
*/
public CookieRememberMeManager rememberMeManager() {
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
cookieRememberMeManager.setCookie(rememberMeCookie());
//rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)
cookieRememberMeManager.setCipherKey(Base64.decode("4AvVhmFLUs0KTA3Kprsdag=="));
return cookieRememberMeManager;
}
/**
* cookie对象;会话Cookie模板 ,默认为: JSESSIONID 问题: 与SERVLET容器名冲突,重新定义为sid或rememberMe,自定义
*
* @return
*/
public SimpleCookie rememberMeCookie() {
//这个参数是cookie的名称,对应前端的checkbox的name = rememberMe
SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
//setcookie的httponly属性如果设为true的话,会增加对xss防护的安全系数。它有以下特点:
//setcookie()的第七个参数
//设为true后,只能通过http访问,javascript无法访问
//防止xss读取cookie
simpleCookie.setHttpOnly(true);
simpleCookie.setPath("/");
//<!-- 记住我cookie生效时间30天 ,单位秒;-->
simpleCookie.setMaxAge(2592000);
return simpleCookie;
}