Springboot 整合 shiro
自定义核心组件 Realm:
public class MyRealm extends AuthorizingRealm {@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {return null;}@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {String username = (String) token.getPrincipal();if (!"javaboy".equals(username)) {throw new UnknownAccountException("账户不存在!");}return new SimpleAuthenticationInfo(username, "123", getName());}
}
配置 Shiro
接下来进行 Shiro 的配置:
@Configuration
public class ShiroConfig {@BeanMyRealm myRealm() {return new MyRealm();}
@BeanSecurityManager securityManager() {DefaultWebSecurityManager manager = new DefaultWebSecurityManager();manager.setRealm(myRealm());return manager;}@BeanShiroFilterFactoryBean shiroFilterFactoryBean() {ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();bean.setSecurityManager(securityManager());bean.setLoginUrl("/login");bean.setSuccessUrl("/index");bean.setUnauthorizedUrl("/unauthorizedurl");Map<String, String> map = new LinkedHashMap<>();map.put("/doLogin", "anon");map.put("/**", "authc");bean.setFilterChainDefinitionMap(map);return bean;}
}
这些东西都配置完成后,接下来配置登录 Controller:
@RestController
public class LoginController {@PostMapping("/doLogin")public void doLogin(String username, String password) {Subject subject = SecurityUtils.getSubject();try {subject.login(new UsernamePasswordToken(username, password));System.out.println("登录成功!");} catch (AuthenticationException e) {e.printStackTrace();System.out.println("登录失败!");}}@GetMapping("/hello")public String hello() {return "hello";}@GetMapping("/login")public String login() {return "please login!";}
}
未登录会自动跳转到 /login 接口:
使用 Shiro Starter
上面这种配置方式实际上相当于把 SSM 中的 XML 配置拿到 Spring Boot 中用 Java 代码重新写了一遍,除了这种方式之外,我们也可以直接使用 Shiro 官方提供的 Starter 。
创建工程,和上面的一样
创建成功后,添加 shiro-spring-boot-web-starter ,这个依赖可以代替之前的 shiro-web 和 shiro-spring 两个依赖,pom.xml 文件如下:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring-boot-web-starter</artifactId><version>1.4.0</version></dependency>
</dependencies>
复制代码
创建 Realm
这里的 Realm 和前面的一样。
配置 Shiro 基本信息
接下来在 application.properties 中配置 Shiro 的基本信息:
shiro.sessionManager.sessionIdCookieEnabled=true
shiro.sessionManager.sessionIdUrlRewritingEnabled=true
shiro.unauthorizedUrl=/unauthorizedurl
shiro.web.enabled=true
shiro.successUrl=/index
shiro.loginUrl=/login
复制代码配置解释:
第一行表示是否允许将sessionId 放到 cookie 中
第二行表示是否允许将 sessionId 放到 Url 地址拦中
第三行表示访问未获授权的页面时,默认的跳转路径
第四行表示开启 shiro
第五行表示登录成功的跳转页面
第六行表示登录页面
配置 ShiroConfig
@Configuration
public class ShiroConfig {@BeanMyRealm myRealm() {return new MyRealm();}@BeanDefaultWebSecurityManager securityManager() {DefaultWebSecurityManager manager = new DefaultWebSecurityManager();manager.setRealm(myRealm());return manager;}@BeanShiroFilterChainDefinition shiroFilterChainDefinition() {DefaultShiroFilterChainDefinition definition = new DefaultShiroFilterChainDefinition();definition.addPathDefinition("/doLogin", "anon");definition.addPathDefinition("/**", "authc");return definition;}
}
复制代码这里的配置和前面的比较像,但是不再需要 ShiroFilterFactoryBean 实例了,替代它的是 ShiroFilterChainDefinition ,在这里定义 Shiro 的路径匹配规则即可。
Springboot 整合 shiro相关推荐
- 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 ...
- SpringBoot整合Shiro实现登录认证和授权CHCache
文章目录 一. springboot实现普通登录 1 添加依赖 2 编写配置文件 3 新建实体类和mapper 4 编写业务层代码 5 编写控制器 6 编写启动类 7 编写登录页面和主页面 二. sp ...
- 补习系列(6)- springboot 整合 shiro 一指禅
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- SpringBoot整合Shiro实现权限控制,验证码
本文介绍 SpringBoot 整合 shiro,相对于 Spring Security 而言,shiro 更加简单,没有那么复杂. 目前我的需求是一个博客系统,有用户和管理员两种角色.一个用户可能有 ...
- SpringBoot 整合Shiro 一指禅
目标 了解ApacheShiro是什么,能做什么: 通过QuickStart 代码领会 Shiro的关键概念: 能基于SpringBoot 整合Shiro 实现URL安全访问: 掌握基于注解的方法,以 ...
- SpringBoot整合Shiro搭建登录注册认证授权权限项目模板
主要内容: 1 SpringBoot整合Shiro安全框架; 2 Shiro主要学习内容总结;(执行流程.主要对象接口.注意事项等) 3 Redis实现对权限信息缓存; ! 温馨提示: 想要快速搭Sh ...
- SpringBoot整合Shiro学习(上)
SpringBoot整合Shiro(上) 基于[编程不良人]2020最新版Shiro教程,整合SpringBoot项目实战教程 哔哩哔哩链接:https://www.bilibili.com/vide ...
- Springboot整合Shiro之授权
本文我们来介绍SpringBoot整合Shiro来实现授权的操作 一.注解的使用方式 1.配置类修改 在权限校验的时候,我们一般在控制中通过注解来实现权限的校验,但我们需要放开注解的使用,在配 ...
- springboot整合shiro
springboot整合shiro 导入依赖 <!-- shiro鉴权框架--> <dependency><groupId>org.apache.shiro< ...
最新文章
- 非常详细的sift算法原理解析
- 百度飞桨入选互联网领先科技成果,王海峰:AI进入工业化大生产新阶段
- 安装tomcat出现failed to install tomcat8 service错误及解决方法
- Python+selenium 自动化-模拟键盘输入、点击操作,如何查看所支持的全部键位名称
- IDAE启动报错:Intellij idea Cannot start internal HTTP server. Git integration, JavaScript debugger...
- getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?
- Java IDEA使用详解
- 剑指offer之正则表达式匹配
- 【持续更新】1996-2022历代AMD Radeon桌面显卡列表,Radeon显卡发布日期
- [RK3128][Android 6.0] 3G模块调试
- 第十六届全国大学生智能汽车比赛—摄像头算法控制总结
- h5页面分享朋友,朋友圈设置缩略图,自定义标题,描述!
- win10无线显示未连接到服务器,解决win10无线网络已连接但上不了网的方法
- 真香!用Python检测和识别车牌(附代码)
- Get 和 Post 请求
- 程序员文档写作能力(二)-大三段式构架你的文档
- linux命令建立组管理员,Linux gpasswd命令:为用户组设置密码或者添加删除用户组成员及管理员命令|程序员日记|程序员日记记录专业的技术知识...
- Procmon(系统资源管理器)v3.20.0.0绿色中文版
- android layout文件夹下新建子文件夹 及解决文件夹爆红
- 产品读书《你的团队需要一个会讲故事的人》
热门文章
- 操作国学公众号项目,半年涨粉30万
- moldflow2015软件安装技巧
- 团建游戏---小泰山
- 解决Intel12代酷睿CPU单线程调度问题(二)
- 程序员的数学【微积分基础】
- 关于360防火墙弹出木马提示框,是由于执行文件加密引起,已将提交360认证,请放心使用...
- 【WebGIS初学到入职】第二阶段的小结
- 麒麟合盛(APUS)李涛:做企业要以“半个世纪”为单位
- 解决Adobe Acrobat Pro DC 使用高亮文本标记,但是文字却被遮住了问题
- 分布式事务数据库HotDBV2.5.4版本