SpringBoot整合Shiro

本文详细介绍了如何在SpringBoot项目中整合Shiro框架,包括Shiro的基本介绍、主要功能、外部框架结构以及内部工作原理。重点讲解了Shiro的配置、依赖引入、Bean配置、认证与授权实现,以及在控制层的使用。通过本文,读者可以了解到Shiro在权限管理中的关键步骤和实践方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,前言

在以往的权限管理中,我们的权限管理通常是有以下几个步骤:

  1. 创建用户,分配权限。

  2. 用户登录,权限拦截器拦截请求,识别当前用户登录信息

  3. 从权限表中判断是否拥有权限

从以上步骤中可以提取到以下三个问题。

1.如何让Shiro拦截请求。

    在web开发中,Shiro会提供一个拦截器来对请求进行拦截。

2.Shiro如何判断发起请求用户的身份?

    在web开发中,会借助session来判断,如果禁用了session,那么可能需要重写一些方法。

3.如何判断权限?

    Shiro使用realm来判断权限。

2, Shiro的介绍

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Shiro不仅可以用于javaEE环境,也可以用于javaSE

3,Shiro功能

在这里插入图片描述

  Authentication:身份认证,验证用户是否拥有某个身份。
  Authorization: 权限校验,验证某个已认证的用户是否拥有某个权限。确定“谁”可以访问“什么”。
  Session Management:会话管理,管理用户登录后的会话,
   Cryptography:加密,使用密码学加密数据,如加密密码。
  Web Support:Web支持,能够比较轻易地整合到Web环境中。
   Caching:缓存,对用户的数据进行缓存,
  Concurrency:并发,Apache Shiro支持具有并发功能的多线程应用程序,也就是说支持在多线程应用中并发验证。
  Testing:测试,提供了测试的支持。
  Run as :允许用户以其他用户的身份来登录。
  Remember me :记住我

4.Shiro框架(外部)

在这里插入图片描述

  1.     可以看到:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject;其每个API的含义:
        Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;
  2.     SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;
  3.     Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

也就是说对于我们而言,最简单的一个Shiro应用:
      1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;
      2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。

5.Shiro框架(内部)

在这里插入图片描述

6.Shiro脚本使用

项目目录:
在这里插入图片描述

6.1引用一个依赖
 <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-web -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.4.0</version>
        </dependency>
6.2 配置两个Bean

    新建一个shiroConfig配置类,配置Shiro最为核心的安全管理器SecurityManager。该类中分别创建ShiroFilterFactoryBean、ShiroFilterFactoryBean、UserRealm。

@Configuration
public class shiroConfig {
   
   

    //ShiroFilterFactoryBean
    @Bean
    public ShiroFilterFactoryBean getDefaultWebSecurityManagerBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager){
   
   
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
        //设置完全管理器
        bean.setSecurityManager(defaultWebSecurityManager);

        return bean;
    }


    //ShiroFilterFactoryBean:2
    @Bean(name="securityManager")
    public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
   
   
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值