SpringBoot整合Shiro的环境搭建教程

 更新时间:2022年12月18日 08:26:40   作者:世界尽头与你  
这篇文章主要为大家详细介绍了SpringBoot整合Shiro的环境搭建教程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下

SpringBoot整合Shiro环境搭建

导入 SpringBoot 和 Shiro 整合包的依赖:

<!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring -->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.10.1</version>
</dependency>

下面是编写配置文件:

@Configuration
public class ShiroConfig {
    
}

Shiro 三大要素

  • subject -> ShiroFilterFactoryBean
  • securityManager -> DefaultWebSecurityManager
  • realm

实际操作中对象创建的顺序 : realm -> securityManager -> subject

第一步:编写自定义的 realm ,需要继承 AuthorizingRealm,并且重写认证和授权方法:

public class UserRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        System.out.println("执行了授权方法");
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        System.out.println("执行了认证方法");
        return null;
    }
}

注册我们自己的realm到配置类里:

@Configuration
public class ShiroConfig {
    @Bean
    public UserRealm userRealm(){
        return new UserRealm();
    }
}

第二步:创建 securityManager,并加载realm:

@Bean(name = "SecurityManager")
public DefaultWebSecurityManager getDefaultWebSecurity(@Qualifier("userRealm") UserRealm userRealm) {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    // 需要关联自定义的 Realm,通过参数把 Realm 对象传递过来
    securityManager.setRealm(userRealm);
    return securityManager;
}

第三步:创建 subject,并关联 securityManager:

@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) {
    ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean();
    // 设置安全管理器
    // 需要关联 securityManager ,通过参数把 securityManager 对象传递过来
    subject.setSecurityManager(defaultWebSecurityManager);
    return subject;
}

完整配置类:

@Configuration
public class ShiroConfig {

    @Bean
    public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) {
        ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean();
        // 设置安全管理器
        // 需要关联 securityManager ,通过参数把 securityManager 对象传递过来
        subject.setSecurityManager(defaultWebSecurityManager);
        return subject;
    }

    @Bean(name = "SecurityManager")
    public DefaultWebSecurityManager getDefaultWebSecurity(@Qualifier("userRealm") UserRealm userRealm) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        // 需要关联自定义的 Realm,通过参数把 Realm 对象传递过来
        securityManager.setRealm(userRealm);
        return securityManager;
    }

    @Bean
    public UserRealm userRealm() {
        return new UserRealm();
    }
}

现在,我们来实现一个简单的页面拦截测试一下吧!

编写两个页面、在templates目录下新建一个 user 目录 add.html update.html:

页面内容可以自定义:

在index页面上,增加跳转链接功能:

<a th:href="@{/user/add}" rel="external nofollow" >add</a>
<hr/>
<a th:href="@{/user/update}" rel="external nofollow" >update</a>

编写跳转到页面的controller:

@RequestMapping("/user/add")
public String toAdd() {
    return "user/add";
}

@RequestMapping("/user/update")
public String toUpdate() {
    return "user/update";
}

之后运行无误即可配置成功!

到此这篇关于SpringBoot整合Shiro的环境搭建教程的文章就介绍到这了,更多相关SpringBoot整合Shiro内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC自定义类型转换器实现解析

    SpringMVC自定义类型转换器实现解析

    这篇文章主要介绍了SpringMVC自定义类型转换器实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • SpringBoot整合Redis的示例

    SpringBoot整合Redis的示例

    这篇文章主要介绍了SpringBoot整合Redis的示例,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-10-10
  • Java调用ChatGPT(基于SpringBoot和Vue)实现可连续对话和流式输出的ChatGPT API

    Java调用ChatGPT(基于SpringBoot和Vue)实现可连续对话和流式输出的ChatGPT API

    这篇文章主要介绍了Java调用ChatGPT(基于SpringBoot和Vue),实现可连续对话和流式输出的ChatGPT API(可自定义实现AI助手),文中代码示例介绍的非常详细,感兴趣的朋友可以参考下
    2023-04-04
  • Java+Swing实现经典五子棋游戏

    Java+Swing实现经典五子棋游戏

    五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一。本文将采用Java Swing实现这一经典游戏,需要的可以参考一下
    2022-01-01
  • java 实现读取clob

    java 实现读取clob

    这篇文章主要介绍了java 如何实现读取clob,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-10-10
  • MyBatis在insert插入操作时返回主键ID的配置(推荐)

    MyBatis在insert插入操作时返回主键ID的配置(推荐)

    这篇文章主要介绍了MyBatis在insert插入操作时返回主键ID的配置的相关资料,需要的朋友可以参考下
    2017-10-10
  • Java中MD5的使用代码示例

    Java中MD5的使用代码示例

    这篇文章主要给大家介绍了关于Java中MD5的使用示例,MD5加密是一种常见的加密方式,我们经常用在保存用户密码和关键信息上,需要的朋友可以参考下
    2023-08-08
  • Spring Security基于JWT实现SSO单点登录详解

    Spring Security基于JWT实现SSO单点登录详解

    这篇文章主要介绍了Spring Security基于JWT实现SSO单点登录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Hadoop集成Spring的使用详细教程(快速入门大数据)

    Hadoop集成Spring的使用详细教程(快速入门大数据)

    这篇文章主要介绍了Hadoop集成Spring的使用详细教程(快速入门大数据),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java获取Jar、War包路径并生成可编辑修改的本地配置文件

    Java获取Jar、War包路径并生成可编辑修改的本地配置文件

    这篇文章主要给大家介绍了关于Java如何获取Jar、War包路径并生成可编辑修改的本地配置文件,文中通过代码介绍的非常详细,对大家学习或者使用Java具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01

最新评论