前言:大家都知道shiro每次都会走权限认证这步
这样每次都会去数据库查询数据,很影响系统的稳定性。而且源码中也是先看缓存有没有,没有在查数据库
如图:每次都查询数据库,是不可取的。
加入如下配置
<!-- 缓存权限 -->
<bean id="cacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager"/>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm"/>
<property name="cacheManager" ref="cacheManager"/>
</bean>
在次访问就会只走一次请求。。
记住我功能
再没有实现记住我功能之前,浏览器中是没有cookie的
实现记住我步骤
登录界面
登录后台,主要加上 userPass.setRememberMe(true);
配置文件
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberTest"/>
<property name="httpOnly" value="true"/>
<property name="maxAge" value="2592000"/>
</bean>
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="rememberMeCookie"/>
<!--16,24,32的base64-->
<property name="cipherKey" value="#{T(org.apache.shiro.codec.Base64).decode('MTIzNDU2Nzg5MGFiY2RlZg==')}"/>
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm"/>
<property name="cacheManager" ref="cacheManager"/>
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
在启动项目,勾选记住我
我们定义的cookie就存在了。
当我们关闭浏览器,再次打开,发现cookie还是存在的