自定义核心组件 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相关推荐

  1. springboot整合shiro使用shiro-spring-boot-web-starter

    此文章仅仅说明在springboot整合shiro时的一些坑,并不是教程 增加依赖 <!-- 集成shiro依赖 --> <dependency><groupId> ...

  2. springboot整合shiro和session的详细过程和自定义登录拦截器

    文章目录 1.shiro依赖 2.shiro配置 shiro过滤器配置: 关联自定义的其他管理器 自定义会话工厂: 3.登陆时记录用户信息 4.shiro一些工具类的学习 5.自定义登录拦截器 shi ...

  3. SpringBoot整合Shiro实现登录认证和授权CHCache

    文章目录 一. springboot实现普通登录 1 添加依赖 2 编写配置文件 3 新建实体类和mapper 4 编写业务层代码 5 编写控制器 6 编写启动类 7 编写登录页面和主页面 二. sp ...

  4. 补习系列(6)- springboot 整合 shiro 一指禅

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  5. SpringBoot整合Shiro实现权限控制,验证码

    本文介绍 SpringBoot 整合 shiro,相对于 Spring Security 而言,shiro 更加简单,没有那么复杂. 目前我的需求是一个博客系统,有用户和管理员两种角色.一个用户可能有 ...

  6. SpringBoot 整合Shiro 一指禅

    目标 了解ApacheShiro是什么,能做什么: 通过QuickStart 代码领会 Shiro的关键概念: 能基于SpringBoot 整合Shiro 实现URL安全访问: 掌握基于注解的方法,以 ...

  7. SpringBoot整合Shiro搭建登录注册认证授权权限项目模板

    主要内容: 1 SpringBoot整合Shiro安全框架; 2 Shiro主要学习内容总结;(执行流程.主要对象接口.注意事项等) 3 Redis实现对权限信息缓存; ! 温馨提示: 想要快速搭Sh ...

  8. SpringBoot整合Shiro学习(上)

    SpringBoot整合Shiro(上) 基于[编程不良人]2020最新版Shiro教程,整合SpringBoot项目实战教程 哔哩哔哩链接:https://www.bilibili.com/vide ...

  9. Springboot整合Shiro之授权

      本文我们来介绍SpringBoot整合Shiro来实现授权的操作 一.注解的使用方式 1.配置类修改   在权限校验的时候,我们一般在控制中通过注解来实现权限的校验,但我们需要放开注解的使用,在配 ...

  10. springboot整合shiro

    springboot整合shiro 导入依赖 <!-- shiro鉴权框架--> <dependency><groupId>org.apache.shiro< ...

最新文章

  1. 非常详细的sift算法原理解析
  2. 百度飞桨入选互联网领先科技成果,王海峰:AI进入工业化大生产新阶段
  3. 安装tomcat出现failed to install tomcat8 service错误及解决方法
  4. Python+selenium 自动化-模拟键盘输入、点击操作,如何查看所支持的全部键位名称
  5. IDAE启动报错:Intellij idea Cannot start internal HTTP server. Git integration, JavaScript debugger...
  6. getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?
  7. Java IDEA使用详解
  8. 剑指offer之正则表达式匹配
  9. 【持续更新】1996-2022历代AMD Radeon桌面显卡列表,Radeon显卡发布日期
  10. [RK3128][Android 6.0] 3G模块调试
  11. 第十六届全国大学生智能汽车比赛—摄像头算法控制总结
  12. h5页面分享朋友,朋友圈设置缩略图,自定义标题,描述!
  13. win10无线显示未连接到服务器,解决win10无线网络已连接但上不了网的方法
  14. 真香!用Python检测和识别车牌(附代码)
  15. Get 和 Post 请求
  16. 程序员文档写作能力(二)-大三段式构架你的文档
  17. linux命令建立组管理员,Linux gpasswd命令:为用户组设置密码或者添加删除用户组成员及管理员命令|程序员日记|程序员日记记录专业的技术知识...
  18. Procmon(系统资源管理器)v3.20.0.0绿色中文版
  19. android layout文件夹下新建子文件夹 及解决文件夹爆红
  20. 产品读书《你的团队需要一个会讲故事的人》

热门文章

  1. 操作国学公众号项目,半年涨粉30万
  2. moldflow2015软件安装技巧
  3. 团建游戏---小泰山
  4. 解决Intel12代酷睿CPU单线程调度问题(二)
  5. 程序员的数学【微积分基础】
  6. 关于360防火墙弹出木马提示框,是由于执行文件加密引起,已将提交360认证,请放心使用...
  7. 【WebGIS初学到入职】第二阶段的小结
  8. 麒麟合盛(APUS)李涛:做企业要以“半个世纪”为单位
  9. 解决Adobe Acrobat Pro DC 使用高亮文本标记,但是文字却被遮住了问题
  10. 分布式事务数据库HotDBV2.5.4版本