shiro 实现 网站登录记住我功能 学习记录(四)
在很多网站都有在登录的时候,比如说记住我 几天之内 只要再此打开这个网站,都不需要再登录的情况:
1、前台JSP增加 单选框:记住我 如
2、在处理登录的 Controller 代码中增加接收这个参数的变量如下图
默认情况下是 0 只有前台页面选中的时候,传过来 1
当 Controller 判断 isRememberMe 为 1 的时候,用户进行了记住我的动作,那么需要增加 token.setRememberMe(true); 操作
3、在shiro的配置文件中增加如下cookie配置:
<!-- 记住密码Cookie -->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberMe"/>
<!-- 7天,采用spring el表达式来计算,方便修改 -->
<property name="maxAge" value="#{7 * 24 * 60 * 60}"/>
<!-- <property name="domain" value=".yzixi.com"/> -->
</bean> <!-- rememberMe管理器,cipherKey生成见{@code Base64Test.java} -->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="rememberMeCookie"/>
</bean>
4、在 安全管理器 的 securityManager 中增加变量 rememberMeManager 配置,注意下面标红的属性
<!-- 1、安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="shiroDbRealm"></property>
<!-- 设置缓存管理器为 ehcache -->
<property name="cacheManager" ref="shiroEhcacheManager"></property>
<!-- 配置sessionManager,提供session管理 -->
<property name="sessionManager" ref="sessionManager"></property>
<!-- 配置记住我 -->
9 <property name="rememberMeManager" ref="rememberMeManager"></property>
</bean>
5、同时需要修改shiro 的过滤器的权限认证级别 注意下面的标红属性权限级别
由原来的
<property name="filterChainDefinitions">
<value>
<!--
anon 不需要认证
authc 需要认证
user 验证通过或RememberMe登录的都可以
-->
<!-- 系统中的静态资源需要放行-->
/static/** = anon
<!-- 系统中登录验证码需要放行-->
/captcha.action = anon
<!-- 系统中登录动作需要放行-->
/login.action = anon
<!-- 系统中注册动作需要放行-->
/regist.action = anon
<!-- 系统中的所有资源、行为都需要认证-->
/** = authc
</value>
</property>
修改为:
<property name="filterChainDefinitions">
<value>
<!--
anon 不需要认证
authc 需要认证
user 验证通过或RememberMe登录的都可以
-->
<!-- 系统中的静态资源需要放行-->
/static/** = anon
<!-- 系统中登录验证码需要放行-->
/captcha.action = anon
<!-- 系统中登录动作需要放行-->
/login.action = anon
<!-- 系统中注册动作需要放行-->
/regist.action = anon
<!-- 系统中的所有资源、行为都需要认证-->
/** = user
</value>
</property>
经过以上的开发,那么就完成 记住我的 功能。
题外话:假如 访问的网站存在二级域名、三级域名,那么需要增加一个配置:
域的配置 :
增加 domain的配置 并指定值 修改为:
shiro 实现 网站登录记住我功能 学习记录(四)的更多相关文章
- JavaScript学习记录四
title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- leveldb 学习记录(四)Log文件
前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...
- 4.VUE前端框架学习记录四:Vue组件化编码2
VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...
- Spring Security框架下实现两周内自动登录"记住我"功能
本文是Spring Security系列中的一篇.在上一篇文章中,我们通过实现UserDetailsService和UserDetails接口,实现了动态的从数据库加载用户.角色.权限相关信息,从而实 ...
- leveldb 学习记录(四) skiplist补与变长数字
在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...
- ThinkPHP3.2.2实现持久登录(记住我)功能的方法
实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录 ...
- VUE2.0实现购物车和地址选配功能学习第四节
第四节 v-on实现金额动态计算 用¥金额 进行格式处理,可以使用原生js进行转换,但是在vuei,使用filter过滤器更加方便 注: 1.es6语法=>和import等 好处在于res参数后 ...
- shiro 集成spring 使用 redis作为缓存 学习记录(六)
1.在applicationContext-redis.xml配置文件中增加如下: 申明一个cacheManager对象 用来注入到 shiro的 securityManager 属性 cac ...
- SpringMVC学习记录四——功能开发及参数绑定
9 商品修改功能开发 9.1 需求 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...
随机推荐
- bzoj 3994 [SDOI2015]约数个数和——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3994 \( d(i*j)=\sum\limits_{x|i}\sum\limits_{y|j ...
- C#操作mysql数据库,往mysql读取或者写入数据
最近在开发的一个项目,需要将数据存贮在mysql数据库中,于是需要写一个操作mysql的帮助类,我采用的是官方的,还是先给出一个链接,后面有时间的话,继续更新. http://blog.csdn.ne ...
- openresty+lua做接口调用权限限制
说明:openresty可以理解为一个服务器它将nginx的核心包含了过来,并结合lua脚本语言实现一些对性能要求高的功能,该篇文章介绍了使用openresty 1.purview.lua --调用j ...
- 常见企业IT支撑【4、gitlab代码管理工具】
安装方式可借鉴http://www.cnblogs.com/juandx/p/5339254.html 安装方式
- 用活firewalld防火墙中的zone
原文地址:http://www.excelib.com/article/290/show firewalld中zone的含义学生前面已经给大家介绍过了,说白了一个zone就是一套规则集.可是什么时候该 ...
- 数据结构与算法JavaScript描述——栈的使用
有一些问题特别适合用栈来解决.本节就介绍几个这样的例子. 1) 数制间的相互转换 可以利用栈将一个数字从一种数制转换成另一种数制.假设想将数字n 转换为以b 为基数的数字,实现转换的算法如下. 使 ...
- java代码----对于数据类型Integer
总结: 主要是方法的理解 老师曾经说过final 和fianlly的区别 我自己的理解就是 如果一个类的前面定义了final,那么它就不能被继承,派生子类,对于方法,那么方法就不能改变,变量前面也是必 ...
- 阻塞队列之二:LinkedTransferQueue
一.LinkedTransferQueue简介 TransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法.LinkedTransferQueue是TransferQ ...
- @BindingAnnotation
(1) 如果 一个接口只有一个实现,使用这种连接注解就可以: bind(XXInterface.class).to(XXImpl.class); @Inject XXInterface xxInter ...
- SpringMVC使用Hibernate-validator验证出现的错误
缺少jar包 SpringMVC可以使用Hibernate-validator作为效验的实现,需要的jar包: hibernate-validator.jar validation-api.jar j ...