SpringBoot整合Shiro(认证+授权)
文章目录
- Shiro框架简介
- Spring Boot整合shiro环境搭建
- Shiro实现登录拦截
Shiro框架简介
Apache Shiro是一个强大且易用的Java安全框架,执行身份认证丶授权丶密码和会话管理。
shiro有6大作用:
- Authentcation 认证===用户登录
- Authorization 授权===用户具有哪些权限
- Cryptography 安全数据加密
- Session Management 会话管理
- Web integration web 系统集成
- Interations 集成其他应用,spring,缓存框架
主要是 认证 和 授权
以用户登录为例-多图参考↓
Spring Boot整合shiro环境搭建
1.创建Spring Boot应用,集成Shiro及相关组件,pom.xml
pom.xml
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.7.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
2.准备一个sql表
3.配置yml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/shirodbtest?accountusername: rootpassword: guohuithymeleaf:prefix: classpath:/templates
4.自定义realm
自定义realm首先我们就要写一个realm,而这个realm我们一般要继承AuthorizingRealm类,
因为这个类里面就有实现接收用户认证信息和接收用户权限信息的两个方法,而realm就是用来从数据库查询这些数据的。
下面是我自定义的realm:
//。1 自定义的Realm
public class UserRealm extends AuthorizingRealm {@Override//授权protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {System.out.println("执行了授权===》doGetAuthorizationInfo");return null;}@Override//认证protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {System.out.println("执行了认证===》doGetAuthenticationInfo");return null;}
}
5.编写controller控制器
@Controller
public class MyController {@RequestMapping("/index")public String toIndex(Model model){model.addAttribute("msgTest","hello,shiro");return "index";}@RequestMapping("user/add")public String add(){return "user/add";}@RequestMapping("user/update")public String update(){return "user/update";}
}
6.编写Shiro的配置类
@Configuration
public class ShiroConfig {//3. 连接前端 ShiroFilterFactoryBeanpublic ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("defaultWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) {ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();//设置安全管理器bean.setSecurityManager(defaultWebSecurityManager);return bean;}//2. 接管对象 DafaultWebSecurityManager@Beanpublic DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm) {DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();//关联userReal 接管reaml对象securityManager.setRealm(userRealm);return securityManager;}//1. 创建realm对象 、需要自定义@Beanpublic UserRealm userRealm() {return new UserRealm();}
}
7.controller对应的界面
index
add
update
8.主启动器 启动 并访问测试 http://localhost:8080
跳转add和update测试
Spring Boot整合Shiro环境搭建成功
Shiro实现登录拦截
1.编写登录界面
2.编写登录界面的controller
@RequestMapping("/tologin")public String toLonin() {return "login";}
3.Realm配置过滤器
Realm内置过滤器
anon: 无需认证就可以访问
authc: 必须认证了才能访问
user: 必须拥有我 记住我 功能才能访问
perms: 拥有对莫个资源的权限才能访问
role: 拥有莫个角色权限才能访问
@Beanpublic ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("defaultWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) {ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();//设置安全管理器bean.setSecurityManager(defaultWebSecurityManager);/* 添加Shiro的内置过滤器anon: 无需认证就可以访问authc: 必须认证了才能访问user: 必须拥有我 记住我 功能才能访问perms: 拥有对莫个资源的权限才能访问role: 拥有莫个角色权限才能访问*/LinkedHashMap<String, String> filterMap = new LinkedHashMap<>();filterMap.put("/user/add", "anon");//user,的add anon设置所有人可以访问filterMap.put("/user/update", "authc");//user,的update authc设置认证了才能访问bean.setFilterChainDefinitionMap(filterMap);bean.setLoginUrl("/tologin");return bean;}
4.测试
我们给add界面设置的anon 无需认证就可以访问
我们给update界面设置的authc: 必须认证了才能访问
访问update界面设置的是认证了才能访问
我们设置了登录拦截
没有权限访问的界面都会被登录界面拦截
访问update功能
Shiro实现登录拦截成功!!!
#springboot+shiro+mybatis-plus+thymeleaf整合
springboot+shiro+mybatis-plus+thymeleaf整合
SpringBoot整合Shiro(认证+授权)相关推荐
- Springboot整合Shiro之授权
本文我们来介绍SpringBoot整合Shiro来实现授权的操作 一.注解的使用方式 1.配置类修改 在权限校验的时候,我们一般在控制中通过注解来实现权限的校验,但我们需要放开注解的使用,在配 ...
- SpringBoot整合Shiro实现登录认证和授权CHCache
文章目录 一. springboot实现普通登录 1 添加依赖 2 编写配置文件 3 新建实体类和mapper 4 编写业务层代码 5 编写控制器 6 编写启动类 7 编写登录页面和主页面 二. sp ...
- SpringBoot整合Shiro搭建登录注册认证授权权限项目模板
主要内容: 1 SpringBoot整合Shiro安全框架; 2 Shiro主要学习内容总结;(执行流程.主要对象接口.注意事项等) 3 Redis实现对权限信息缓存; ! 温馨提示: 想要快速搭Sh ...
- springboot整合shiro + jwt + redis实现权限认证(上手即用)
目录 前言 项目结构 依赖导入 建数据库表 建表语句 使用插件生成增删改查 添加MyRealm 添加ShiroConfig 添加JwtFilter JWT相关得类 JwtToken JwtAudien ...
- springboot整合shiro使用shiro-spring-boot-web-starter
此文章仅仅说明在springboot整合shiro时的一些坑,并不是教程 增加依赖 <!-- 集成shiro依赖 --> <dependency><groupId> ...
- springboot整合shiro和session的详细过程和自定义登录拦截器
文章目录 1.shiro依赖 2.shiro配置 shiro过滤器配置: 关联自定义的其他管理器 自定义会话工厂: 3.登陆时记录用户信息 4.shiro一些工具类的学习 5.自定义登录拦截器 shi ...
- 补习系列(6)- springboot 整合 shiro 一指禅
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- SpringBoot整合Shiro实现权限控制,验证码
本文介绍 SpringBoot 整合 shiro,相对于 Spring Security 而言,shiro 更加简单,没有那么复杂. 目前我的需求是一个博客系统,有用户和管理员两种角色.一个用户可能有 ...
- SpringBoot 整合Shiro 一指禅
目标 了解ApacheShiro是什么,能做什么: 通过QuickStart 代码领会 Shiro的关键概念: 能基于SpringBoot 整合Shiro 实现URL安全访问: 掌握基于注解的方法,以 ...
最新文章
- array column函数php,php array_column 函数实例应用
- 10分钟搭建你的第一个图像识别模型 | 附完整代码
- IntelliJ IDEA自动导入包去除星号(import xxx.*)
- JQuery实现表格行当复制
- Serv-u 10.3 的图文安装教程及使用方法
- spark on yarn参数: 任务优先级
- Java实现doc或xls转PDF
- javascript数字验证(转)
- python二级最后一题_python二级考试操作题2.pdf
- ListCtrl常用操作
- Farthest Point Sampling on 2d image
- Unity3D基础10:利用Transform组件移动物体
- tensorflow的pb文件转化为pbtxt
- 易语言基于HTML(网页)开发软件界面UI的方法
- 2017高教杯数学建模B 题分析
- IT人员的职业生涯规划
- 在线CC攻击网站源码
- SPARC架构下的反汇编(四)——SPARC汇编语言(二)
- 知物由学 | 行为时序建模在社交引流黑产识别中的应用
- 大一作业HTML网页作业:简单的旅游 1页 (旅游主题)
热门文章
- C++11中range-based for loops中与的区别
- Win10+vs2013+Caffe静态库配置自己的工程
- ImportError: No module named _tkinter, please install the python-tk package ubuntu运行tkinter错误
- webstorm中自动插入的代码和ts冲突的解决办法
- Emscripten教程之入门指导
- 缓存机制与局部性原理
- html5 app开发重大消息-腾讯在技术端推进Html5生态发展
- Corosync+Pacemaker+DRBD实现Mysql服务的高可用
- windows自带的压缩,解压缩命令
- 充满想象力的 JavaScript 物理和重力实验