Shiro安全框架 会话

扫描

DefaultAdvisorAutoProxyCreator是Spring AOP内置的一个APC,它在容器每个bean初始化的后置处理阶段,从容器中找到所有的Spring Advisor bean,然后检测这些Advisor bean是否需要包裹到容器正在初始化的bean上。

DefaultAdvisorAutoProxyCreator要用的拦截器都来自于容器中匹配的Spring Advisors,而不考虑其他方式定义的aspects。

DefaultAdvisorAutoProxyCreator过滤某个Spring Advisor是否符合条件的方法isEligibleAdvisorBean覆盖了基类中的缺省实现。它有两种工作模式 :
不使用Advisor bean名称前缀匹配方式 : 这种方式下认为每个Advisor都符合条件;
使用Advisor bean名称前缀匹配方式 : 这种方式下认为仅仅Advisor bean名称符合指定前缀的Advisor才符合条件;
当前,符合以上isEligibleAdvisorBean条件的Advisor并不是都会应用到该APC当前所处理的bean上,还会根据bean类/方法上的注解考虑是否包裹一个Advisor。

 /**
 * 当将shiro中的注解RequiresPermissions放到控制层方法时需要配置此对象
 * ,并设置对控制层方法上的注解有效(例如@GetMapping)
 * @return
 */
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator(){
DefaultAdvisorAutoProxyCreator daa = new DefaultAdvisorAutoProxyCreator();
daa.setUsePrefix(true);
return daa;
}

会话时长的设置

@Bean
public SessionManager sessionManager(){
DefaultWebSessionManager sessionManager=
new DefaultWebSessionManager();
//session 的超时时间
//sessionManager.setGlobalSessionTimeout(1000*60*60);//1 个小时
sessionManager.setGlobalSessionTimeout(60*60*1000);//2 分钟
//删除无效 session sessionManager.setDeleteInvalidSessions(true);
//当客户端 cookie 被禁用是否要设置 url 重写
sessionManager.setSessionIdUrlRewritingEnabled(false);
return sessionManager;
}
@Bean
public RememberMeManager rememberMeManager(){
CookieRememberMeManager rememberMeManager=new CookieRememberMeManager();
SimpleCookie cookie=new SimpleCookie("rememberMe");
cookie.setMaxAge(7*24*60\*60);//设置cookie的生命周期
rememberMeManager.setCookie(cookie);
return rememberMeManager;
}

缓存

\*\*

* 配置授权缓存管理器,shiro框架内置缓存对象,底层实现map
* @return
\*/
@Bean
public CacheManager shiroCacheManager(){
return new MemoryConstrainedCacheManager();
}

加密

@Override
public CredentialsMatcher getCredentialsMatcher() {
HashedCredentialsMatcher md5 = new HashedCredentialsMatcher("MD5");
md5.setHashIterations(1);
return md5;
}

你可能感兴趣的:(javaspring)