à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
在读此文章之前您还可能需要先了解:
(39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】
http://412887952-qq-com.iteye.com/blog/2299732
(基本搭建)
(39.2). Spring Boot Shiro权限管理【从零开始学Spring Boot】
http://412887952-qq-com.iteye.com/blog/2299777
(shiro权限引入)
(39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】
http://412887952-qq-com.iteye.com/blog/2299780
(shiro 缓存)
(6). Shiro记住密码
记住密码实现起来也是比较简单的,主要看下是如何实现的。
在com.kfit.config.shiro.ShiroConfiguration加入两个方法:
/**
* cookie对象;
* @return
*/
@Bean
public SimpleCookie rememberMeCookie(){
System.out.println("ShiroConfiguration.rememberMeCookie()");
//这个参数是cookie的名称,对应前端的checkbox的name = rememberMe
SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
//<!-- 记住我cookie生效时间30天 ,单位秒;-->
simpleCookie.setMaxAge(259200);
returnsimpleCookie;
}
/**
* cookie管理对象;
* @return
*/
@Bean
public CookieRememberMeManager rememberMeManager(){
System.out.println("ShiroConfiguration.rememberMeManager()");
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
cookieRememberMeManager.setCookie(rememberMeCookie());
returncookieRememberMeManager;
}
将rememberMeManager注入到SecurityManager中
@Bean
public SecurityManager securityManager(){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
//设置realm.
securityManager.setRealm(myShiroRealm());
//注入缓存管理器;
securityManager.setCacheManager(ehCacheManager());//这个如果执行多次,也是同样的一个对象;
//注入记住我管理器;
securityManager.setRememberMeManager(rememberMeManager());
returnsecurityManager;
}
在ShiroFilterFactoryBean添加记住我过滤器:
@Bean
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager){
System.out.println("ShiroConfiguration.shirFilter()");
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// 必须设置 SecurityManager
shiroFilterFactoryBean.setSecurityManager(securityManager);
//拦截器.
Map<String,String> filterChainDefinitionMap = new LinkedHashMap<String,String>();
//配置退出过滤器,其中的具体的退出代码Shiro已经替我们实现了
filterChainDefinitionMap.put("/logout", "logout");
//配置记住我或认证通过可以访问的地址
filterChainDefinitionMap.put("/index", "user");
filterChainDefinitionMap.put("/", "user");
//<!-- 过滤链定义,从上向下顺序执行,一般将 /**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了;
//<!-- authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问-->
filterChainDefinitionMap.put("/**", "authc");
// 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面
shiroFilterFactoryBean.setLoginUrl("/login");
// 登录成功后要跳转的链接
shiroFilterFactoryBean.setSuccessUrl("/index");
//未授权界面;
shiroFilterFactoryBean.setUnauthorizedUrl("/403");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
returnshiroFilterFactoryBean;
}
主要是加入了:
//配置记住我或认证通过可以访问的地址
filterChainDefinitionMap.put("/index", "user");
filterChainDefinitionMap.put("/", "user");
修改登录界面加入rememberMe复选框:
在login.html中加入:
<P><input type="checkbox" name="rememberMe" />记住我</P>
这时候运行程序,登录之后跳转到/index页面,然后我们关闭浏览器,然后直接访问/index还是可以访问的,说明我们写的记住密码已经生效了,如果访问http://127.0.0.1:8080/userInfo/userAdd 的
话还是需要重新登录的。
至此spring boot集成shiro就真的告一段落了。
当然shiro还是博大精深的,还有很多需要大家去研究,在这里博主抛出几个问题(当然博主自己已经实现了):
问题1:如何在登录的时候加入验证码校验;
问题2:如何在thymleaf使用shiro标签,比如:shiro:hasPermission;
问题3:如何限制密码输错3次就不能登录了;
问题4:如何编写无状态的过滤器;
问题5:在同一个工程中如何有状态和无状态的过滤器同时并存;(这个问题博主还没解决哦,有谁知道怎么解决的,欢迎留言或者加QQ告知,不胜感激)。
【视频&交流平台】
à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
http://412887952-qq-com.iteye.com/blog/2321532
======================================
Spring Boot Shiro视频实战篇【已更新】
======================================
适合人群
有Spring Boot基础的人群。
使用技术
(1)spring boot(整合框架)
(2)spring mvc
(3)spring data jpa(持久化操作)
(4)shiro(安全框架)
(5)thymeleaf(模板引擎)
(6)ehcache(缓存管理)
(7)mysql(数据库)
(8)js/css/img(静态资源使用)
(9)kaptcha(验证码库)
课程目录
1. Spring Boot Shiro介绍
2. Spring Boot 搭建无Shiro的框架
3. Spring Boot Shiro拦截
4. Spring Boot Shiro身份认证准备工作
5. Spring Boot Shiro身份认证
6. Spring Boot Shiro权限控制
7. Spring Boot Shiro缓存
8. Spring Boot Shiro记住密码
9. Spring Boot Shiro登录成功之后下载favicon.ico
10. Spring Boot 在thymeleaf使用shiro标签
11. Spring Boot Shiro密码加密算法
12.Spring Boot Shiro使用JS-CSS-IMG
13. Spring Boot Shiro限制登录尝试次数
14.Spring Boot Shiro 验证码
相关推荐
稳定免费的linux源码 作为一个开放源代码的操作系统,Linux附带的源代码库使得广大爱好者有了一个广泛学习、深入钻研的机会,特别是Linux内核的组织极为复杂,同时,又不能像windows平台的程序一样,可以使用集成...
linux-source-2.6.39.4linux-2.6.39.4 kernel source code linux内核代码
《PyPI官网下载:mypy-boto3-stepfunctions-1.10.39.4.tar.gz——Python库解析》 PyPI(Python Package Index)是Python开发者们分享和获取Python软件包的主要平台,它是Python生态系统的核心组成部分。本文将详细...
通过boto3,开发者可以创建、管理和控制AWS资源。 3. **SageMaker**:Amazon SageMaker是AWS提供的一种完全托管的服务,用于构建、训练和部署机器学习模型。SageMaker简化了整个机器学习流程,包括数据预处理、选择...
不知道为什么今天在网上下这个资源这么困难,所以传上来在这保存着,希望能对大家有用。
资源分类:Python库 所属语言:Python 资源全名:mypy-boto3-cloudsearch-1.10.39.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:mypy-boto3-appmesh-1.10.39.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
39.4 IT服务的预算及财务管理:涵盖了成本控制、预算编制和财务审计,以确保服务的经济性和效率。 39.5 容量管理:规划和管理IT资源的容量,以满足当前和预期的工作负载需求。 39.6 信息安全管理:实施安全策略,...
1. **31-40岁**:这一年龄段的用户占据了相当大的比例,大约39.4%,反映出职场人士对提升专业技能和终身学习的重视。他们可能是为了职业发展或兴趣爱好,积极参与在线课程和知识付费服务。 2. **26-30岁**:这个...
### 常用CPU电源管理芯片关键脚位详解 在现代电子设备中,电源管理芯片起着至关重要的作用,特别是对于CPU这样的高性能组件而言。本文将详细介绍几种常见的电源管理芯片的关键脚位及其功能,帮助读者更好地理解这些...
github.com/wanghao9610/OV-DINO模型
### 控辍保学工作知识点概览 #### 一、控辍保学概念及重要性 - **定义**:控辍保学是指控制学生辍学,保障适龄儿童和青少年完成义务教育阶段学业的一系列措施和活动。 - **重要性**: - 是巩固和发展“两基”...
例如,7.98秒代表赛跑成绩,1.41米代表身高,39.4千克表示体重,38.20℃表示体温等。 小数的意义在于它能够方便地表示分数,尤其是当分母为10、100、1000等十的倍数时。例如,0.90元、2.85元、5.98元就是货币金额的...
#include using namespace std; int main() { cout; cout; cout; cout; }
- 学习小数的含义,如赛跑成绩7.98秒,身高1.41米,体重39.4千克,体温38.2摄氏度,这些都是生活中常见的小数应用。 - 孩子们需要理解小数点后的数字代表的是分数部分,如1米45厘米可转换为1.45米,0.95米表示95...
从社团活动的影响来看,48.5%的学生认为实际体验与预期有很大差距,42.4%的学生认为基本符合预期。社团活动与学习的关系,部分学生认为社团活动对学习有所帮助,但也有一部分人认为社团活动可能影响学习。 综上所述...
小数的计数单位是从十分之一(0.1)开始,接着是百分之一(0.01)、千分之一(0.001)等,每个小数位代表的数值都是10的负次幂。例如,0.01表示的是1/100,0.001表示的是1/1000。 在数学中,相邻两个小数计数单位...
如39.4表示39个整数加上4个十分之一,也就是39 + 4 × 0.1 = 39.4。 接着,通过具体的例子,如取单位“1”的三份(10份中的3份),可以表示为0.3,这是十分之三。当单位“1”被分成100份时,取其中的23份可以表示为...
### 贴片元件封装详解:从零开始的制作指南 #### 一、元件库的存储与管理 在进行贴片元件封装设计时,首要任务是确保元件库的安全与便捷管理。为此,专家建议将自建元件库独立保存于额外的磁盘分区,避免因Protel ...