zoukankan      html  css  js  c++  java
  • shiro 实现 网站登录记住我功能 学习记录(四)

    在很多网站都有在登录的时候,比如说记住我 几天之内  只要再此打开这个网站,都不需要再登录的情况:

    1、前台JSP增加 单选框:记住我 如

    2、在处理登录的 Controller 代码中增加接收这个参数的变量如下图  

    默认情况下是 0    只有前台页面选中的时候,传过来  1

    当 Controller 判断 isRememberMe  为 1 的时候,用户进行了记住我的动作,那么需要增加  token.setRememberMe(true); 操作

    3、在shiro的配置文件中增加如下cookie配置:

     1 <!-- 记住密码Cookie -->
     2     <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
     3         <constructor-arg value="rememberMe"/>
     4         <!-- 7天,采用spring el表达式来计算,方便修改 -->
     5         <property name="maxAge" value="#{7 * 24 * 60 * 60}"/>
     6         <!--         <property name="domain" value=".yzixi.com"/> -->
     7     </bean>
     8 
     9     <!-- rememberMe管理器,cipherKey生成见{@code Base64Test.java} -->
    10     <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
    11         <property name="cookie" ref="rememberMeCookie"/>
    12     </bean>

    4、在 安全管理器  的  securityManager 中增加变量  rememberMeManager  配置,注意下面标红的属性

     1 <!-- 1、安全管理器 -->
     2     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
     3         <property name="realm" ref="shiroDbRealm"></property>
     4         <!-- 设置缓存管理器为 ehcache -->
     5         <property name="cacheManager" ref="shiroEhcacheManager"></property>
     6         <!-- 配置sessionManager,提供session管理 -->
     7         <property name="sessionManager" ref="sessionManager"></property>
     8         <!-- 配置记住我 -->
     9         <property name="rememberMeManager" ref="rememberMeManager"></property>
    10     </bean>

    5、同时需要修改shiro 的过滤器的权限认证级别  注意下面的标红属性权限级别

    由原来的

     1 <property name="filterChainDefinitions">
     2             <value>
     3                 <!-- 
     4                     anon  不需要认证
     5                     authc 需要认证
     6                     user  验证通过或RememberMe登录的都可以
     7                 -->
     8                 <!-- 系统中的静态资源需要放行-->
     9                 /static/** = anon
    10                 <!-- 系统中登录验证码需要放行-->
    11                 /captcha.action = anon
    12                 <!-- 系统中登录动作需要放行-->
    13                 /login.action = anon
    14                 <!-- 系统中注册动作需要放行-->
    15                 /regist.action = anon
    16                 <!-- 系统中的所有资源、行为都需要认证-->
    17                 /** = authc
    18             </value>
    19         </property>

    修改为:

     1 <property name="filterChainDefinitions">
     2             <value>
     3                 <!-- 
     4                     anon  不需要认证
     5                     authc 需要认证
     6                     user  验证通过或RememberMe登录的都可以
     7                 -->
     8                 <!-- 系统中的静态资源需要放行-->
     9                 /static/** = anon
    10                 <!-- 系统中登录验证码需要放行-->
    11                 /captcha.action = anon
    12                 <!-- 系统中登录动作需要放行-->
    13                 /login.action = anon
    14                 <!-- 系统中注册动作需要放行-->
    15                 /regist.action = anon
    16                 <!-- 系统中的所有资源、行为都需要认证-->
    17                 /** = user
    18             </value>
    19         </property>

    经过以上的开发,那么就完成 记住我的  功能。

    题外话:假如  访问的网站存在二级域名、三级域名,那么需要增加一个配置:

    域的配置 :

    增加 domain的配置 并指定值 修改为:

  • 相关阅读:
    python打包exe pyinstaller 简单使用
    加群请回答两个问题,谢谢合作!
    8080_32位汇编-通用寄存器
    学习8086汇编的准备
    HelloWorld生命周期
    我为什么要学习《深入理解计算机系统》这本书?
    MySQL_1.0
    C++命名空间的玩法
    Linux的 7个运行级别
    Linux基础命令2.0
  • 原文地址:https://www.cnblogs.com/yinfengjiujian/p/9084307.html
Copyright © 2011-2022 走看看