Springboot整合shiro_springboot shiro

RBAC是Role-Based Access Control(基于角色的访问控制)的缩写。它是一种广泛应用于安全管理中的访问控制模型。RBAC模型通过授予用户不同的角色,并将角色与权限进行关联,来管理对资源的访问。

RBAC模型中的关键概念包括以下几个部分:

  1. 角色(Role):角色是一组具有相似职责和权限的用户集合。例如,管理员、编辑、访客等都可以是角色。
  2. 权限(Permission):权限是指执行特定操作或访问特定资源的能力。例如,读取、写入、删除等操作可以被视为不同的权限。
  3. 用户(User):用户是系统中的个体,可以被授予一个或多个角色。
  4. 资源(Resource):资源是系统中受到访问控制的对象。可以是文件、数据库记录、API接口等。

3、Shiro核心组件

用户、角色、权限

会给角色赋予权限、给用户赋予角色

1、UsernamePasswordToken,Shiro用来封装用户登录信息,使用用户的登录信息来创建令牌Token。

2、SecurityManager,Shiro的核心部分,负责安全认证和授权。

3、Subject,Shiro的一个抽象概念,包含了用户信息。

4、Realm,开发者自定义的模块,根据项目的需求,验证和授权的逻辑全部写在Reaim中。

5、AuthenticationInfo,用户的角色信息集合,认证时使用。

6、AuthorzationInfo,角色的权限信息集合,授权时使用。

7、DefaultWebSecurityManager,安全管理器,开发者自定义的Realm需要注入到DefaultWebSecurityManager进行管理才能生效

8、ShiroFilterFactoryBean,过滤器工厂,Shiro的基本运行机制是开发者定制规则,Shiro去运行,具体的执行操作就是由ShiroFilterFactoryBean

Shiro的运行机制如下图所示:

4、Springboot整合Shiro

SpringBoot集成Shiro官网:Integrating Apache Shiro into Spring-Boot Applications | Apache Shiro

这里说一下,我从一开始学习就用的Springboot3,而3版本整合shrio出现了Servlet和Shiro不生效等问题。所以还是推荐使用Springboot2的版本去整合Shiro。

不过,后面发现一位大佬把这个问题完美的解决了!!!(膜拜大佬╰(*°▽°*)╯)Java17和springboot3.0使用shiro报ClassNotFoundException_星海蔚蓝的博客-CSDN博客

根据大佬,重新将shiro依赖引入,再去使用Springboot3的版本就没有问题了!!!

即使看懂了上面的概念,你不去看视频教学,下面的代码很难看懂的。所以先去看看教学视频,跟着教学实操。

1、创建Spring Boot应用,集成Shiro及相关组件(这里是我练习模块中的依赖,我直接粘过来的)

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--shiro-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <classifier>jakarta</classifier>
            <version>1.11.0</version>
            <!-- 排除仍使用了javax.servlet的依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.shiro</groupId>
                    <artifactId>shiro-core</artifactI
  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值