广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot中怎么对Shiro进行整合
  • 560
分享到

SpringBoot中怎么对Shiro进行整合

2023-06-08 05:06:26 560人浏览 独家记忆
摘要

本篇内容介绍了“SpringBoot中怎么对shiro进行整合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原生的整合创建项目创建一个 Sp

本篇内容介绍了“SpringBoot中怎么对shiro进行整合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

原生的整合

创建项目

创建一个 Spring Boot 项目,只需要添加 WEB 依赖即可:

SpringBoot中怎么对Shiro进行整合

项目创建成功后,加入 Shiro 相关的依赖,完整的 pom.xml 文件中的依赖如下:

<dependencies>  <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>    <groupId>org.apache.shiro</groupId>    <artifactId>shiro-web</artifactId>    <version>1.4.0</version>  </dependency>  <dependency>    <groupId>org.apache.shiro</groupId>    <artifactId>shiro-spring</artifactId>    <version>1.4.0</version>  </dependency></dependencies>

创建 Realm

接下来我们来自定义核心组件 Realm:

public class MyRealm extends AuthorizingRealm {  @Override  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {    return null;  }  @Override  protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {    String username = (String) token.getPrincipal();    if (!"javaboy".equals(username)) {      throw new UnknownAccountException("账户不存在!");    }    return new SimpleAuthenticationInfo(username, "123", getName());  }}

在 Realm 中实现简单的认证操作即可,不做授权,授权的具体写法和 SSM 中的 Shiro 一样,不赘述。这里的认证表示用户名必须是 javaboy ,用户密码必须是 123 ,满足这样的条件,就能登录成功!

配置 Shiro

接下来进行 Shiro 的配置:

@Configurationpublic class ShiroConfig {  @Bean  MyRealm myRealm() {    return new MyRealm();  }    @Bean  SecurityManager securityManager() {    DefaultWebSecurityManager manager = new DefaultWebSecurityManager();    manager.setRealm(myRealm());    return manager;  }    @Bean  ShiroFilterFactoryBean 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;  }}

在这里进行 Shiro 的配置主要配置 3 个 Bean :

  • 首先需要提供一个 Realm 的实例。

  • 需要配置一个 SecurityManager,在 SecurityManager 中配置 Realm。

  • 配置一个 ShiroFilterFactoryBean ,在 ShiroFilterFactoryBean 中指定路径拦截规则等。

  • 配置登录和测试接口。

其中,ShiroFilterFactoryBean 的配置稍微多一些,配置含义如下:

  • setSecurityManager 表示指定 SecurityManager。

  • setLoginUrl 表示指定登录页面。

  • setSuccessUrl 表示指定登录成功页面。

  • 接下来的 Map 中配置了路径拦截规则,注意,要有序。

这些东西都配置完成后,接下来配置登录 Controller:

@RestControllerpublic 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!";  }}

测试时,首先访问 /hello 接口,由于未登录,所以会自动跳转到 /login 接口:

SpringBoot中怎么对Shiro进行整合

然后调用 /doLogin 接口完成登录:

SpringBoot中怎么对Shiro进行整合

再次访问 /hello 接口,就可以成功访问了:

SpringBoot中怎么对Shiro进行整合

使用 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=trueshiro.sessionManager.sessionIdUrlRewritingEnabled=trueshiro.unauthorizedUrl=/unauthorizedurlshiro.web.enabled=trueshiro.successUrl=/indexshiro.loginUrl=/login

配置解释:

  • 第一行表示是否允许将sessionId 放到 cookie 中

  • 第二行表示是否允许将 sessionId 放到 Url 地址拦中

  • 第三行表示访问未获授权的页面时,默认的跳转路径

  • 第四行表示开启 shiro

  • 第五行表示登录成功的跳转页面

  • 第六行表示登录页面

配置 ShiroConfig

@Configurationpublic class ShiroConfig {  @Bean  MyRealm myRealm() {    return new MyRealm();  }  @Bean  DefaultWebSecurityManager securityManager() {    DefaultWebSecurityManager manager = new DefaultWebSecurityManager();    manager.setRealm(myRealm());    return manager;  }  @Bean  ShiroFilterChainDefinition shiroFilterChainDefinition() {    DefaultShiroFilterChainDefinition definition = new DefaultShiroFilterChainDefinition();    definition.addPathDefinition("/doLogin", "anon");    definition.addPathDefinition("/**", "authc");    return definition;  }}

“SpringBoot中怎么对Shiro进行整合”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: SpringBoot中怎么对Shiro进行整合

本文链接: https://www.lsjlt.com/news/251840.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot中怎么对Shiro进行整合
    本篇内容介绍了“SpringBoot中怎么对Shiro进行整合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原生的整合创建项目创建一个 Sp...
    99+
    2023-06-08
  • 怎么用Springboot快速整合shiro安全框架
    这篇文章主要介绍“怎么用Springboot快速整合shiro安全框架”,在日常操作中,相信很多人在怎么用Springboot快速整合shiro安全框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Sp...
    99+
    2023-07-05
  • Springboot整合Shiro怎么实现登录与权限校验
    这篇文章主要介绍“Springboot整合Shiro怎么实现登录与权限校验”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Springboot整合Shiro怎么实现登录与权限校验”文章能帮助大家解决问...
    99+
    2023-06-30
  • springboot怎么整合shiro实现多验证登录功能
    这篇“springboot怎么整合shiro实现多验证登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springbo...
    99+
    2023-06-08
  • SpringBoot怎么进行整合Druid数据源
    今天小编给大家分享一下SpringBoot怎么进行整合Druid数据源的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.自定...
    99+
    2023-07-02
  • 使用springboot如何实现对mongodb进行整合
    使用springboot如何实现对mongodb进行整合?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。环境依赖在pom文件引入spring-boot-starter-data-...
    99+
    2023-05-31
    springboot mongodb
  • 使用springboot如何实现对 beatlsql进行整合
    这篇文章给大家介绍使用springboot如何实现对 beatlsql进行整合,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。BeetSql是一个全功能DAO工具, 同时具有hibernate 优点 & Myba...
    99+
    2023-05-31
    springboot beatlsql bea
  • 使用springboot如何实现对freemarker进行整合
    这篇文章将为大家详细讲解有关使用springboot如何实现对freemarker进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前提:开发工具:idea框架:spring boot、...
    99+
    2023-05-31
    springboot freemarker
  • 使用SpringBoot如何实现对ElasticSearch进行整合
    这篇文章给大家介绍使用SpringBoot如何实现对ElasticSearch进行整合,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、实体设计:Tutorial.javapublic class Tutorial i...
    99+
    2023-05-31
    springboot elasticsearch
  • 怎么对struts、spring与hibernate进行整合
    怎么对struts、spring与hibernate进行整合?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。准备三个框架结合的lib包Spring3结合Struts2的步骤如下:...
    99+
    2023-05-31
    struts hibernate spring
  • 使用SpringMVC怎么对Swagger进行整合
    这篇文章将为大家详细讲解有关使用SpringMVC怎么对Swagger进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。配置引入相关jar包:<dependency>&nbs...
    99+
    2023-05-31
    springmvc swagger
  • 使用spring怎么对mybatis进行整合
    本篇文章为大家展示了使用spring怎么对mybatis进行整合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 数据库连接配置信息jdbc.properties#mysql version dat...
    99+
    2023-05-31
    spring mybatis
  • SpringBoot中怎么整合SpringSecurity
    SpringBoot中怎么整合SpringSecurity,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.导包<dependency> ...
    99+
    2023-06-05
  • SpringBoot中怎么整合Redis
    SpringBoot中怎么整合Redis,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、安装首先要在本地安装一个redis程序,安装过程十分简单(略过),安装完成后进入到...
    99+
    2023-06-16
  • 使用shiro怎么对INI进行配置
    这期内容当中小编将会给大家带来有关使用shiro怎么对INI进行配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。根对象SecurityManager从之前的Shiro架构图可以看出,Shiro是从根对象...
    99+
    2023-05-31
    shiro ini
  • SpringBoot怎么整合Redis将对象写入redis中
    本篇内容主要讲解“SpringBoot怎么整合Redis将对象写入redis中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Redis将对象写入redis中”吧!1、...
    99+
    2023-06-30
  • 使用Spring boot怎么对Mybatis进行整合
    这篇文章将为大家详细讲解有关使用Spring boot怎么对Mybatis进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、文件结构DataBaseConfiguration.Jav...
    99+
    2023-05-31
    springboot mybatis
  • Python怎么对多个sheet表进行整合
    这篇文章主要介绍“Python怎么对多个sheet表进行整合”,在日常操作中,相信很多人在Python怎么对多个sheet表进行整合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么对多个shee...
    99+
    2023-06-30
  • springboot 中怎么整合fluent mybatis
    这篇文章给大家介绍springboot 中怎么整合fluent mybatis,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。导入pom依赖<!--     &nb...
    99+
    2023-06-20
  • 使用Spring怎么对Web项目进行整合
    今天就跟大家聊聊有关使用Spring怎么对Web项目进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 概述1.整合目的将所有对象的创建与管理任务交给Spring容器,降低程序...
    99+
    2023-05-31
    spring web
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作