Shiro安全框架第三篇| Shiro的认证,授权

本文详细介绍在Springboot环境下,如何使用Apache Shiro框架进行用户认证与授权操作。从搭建Shiro环境开始,逐步讲解了如何配置依赖、创建测试类,并演示了认证与授权的具体流程。通过代码实例,读者可以深入理解Shiro的工作机制。

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

 

Shiro的认证

接下来是在IDEA进行Shiro的学习,新建一个Springboot工程,除了一些默认的依赖,这里需要引入apache.shiro安全框架依赖,以及做单元测试的依赖。

 1<dependencies>
 2        <dependency>
 3            <groupId>org.springframework.boot</groupId>
 4            <artifactId>spring-boot-starter</artifactId>
 5        </dependency>
 6
 7        <dependency>
 8            <groupId>org.springframework.boot</groupId>
 9            <artifactId>spring-boot-starter-test</artifactId>
10            <scope>test</scope>
11        </dependency>
12        <!--apache.shiro安全框架-->
13        <dependency>
14            <groupId>org.apache.shiro</groupId>
15            <artifactId>shiro-core</artifactId>
16            <version>1.4.0</version>
17        </dependency>
18        <!--单元测试-->
19        <dependency>
20            <groupId>junit</groupId>
21            <artifactId>junit</artifactId>
22        </dependency>
23 <dependencies>

创建一个新的测试类

 1public class AuthenticationTest {
 2    //演示例子使用SimpleAccountRealm
 3    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
 4    //认证之前在Realm中添加一个用户
 5    @Before
 6    public  void addUser(){
 7        simpleAccountRealm.addAccount("jiuyue","12345");
 8    }
 9    @Test
10    public void testAuthentication(){
11        //1. 构建securityManager环境
12        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
13        defaultSecurityManager.setRealm(simpleAccountRealm);//将simpleAccountRealm设置到环境中
14        SecurityUtils.setSecurityManager(defaultSecurityManager);//SecurityUtils设置securityManager环境
15        //2. 设置主体要比较的认证、
16
17        Subject subject= SecurityUtils.getSubject();
18        //3. 对提交的主体进行认证
19        UsernamePasswordToken token = new UsernamePasswordToken("jiuyue","12345");
20        subject.login(token);
21        System.out.println("isAuthenticated: "+subject.isAuthenticated());
22        subject.logout();
23        System.out.println("isAuthenticated: "+subject.isAuthenticated());
24    }
25}

 

 

代码实现思路:

 

 

代码分析:

首先通过new DefaultSecurityManager()构建SecurityManager环境,将SimpleAccountRealm设置到环境中。

接着获取 SecurityManager 并绑定到 SecurityUtils,这是一个全局设置,设置一次即可。

通过 SecurityUtils 得到 Subject,其会自动绑定到当前线程;如果在 web 环境在请求结束时需要解除绑定。然后获取身份验证的 Token,如用户名,密码。

调用 subject.login 方法进行登录,其会自动委托给 SecurityManager.login 方法进行登录。

Shiro授权

Shiro的授权与Shiro的认知处理其实是一样的思路。

 1public class AuthenticationTest2 {
 2    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
 3    @Before
 4    public void addUser(){
 5        //simpleAccountRealm.addAccount("jiuyue","12345","admin");
 6        simpleAccountRealm.addAccount("jiuyue","12345","admin","user");
 7    }
 8    @Test
 9    public void testAuthentication(){
10        //1.构建SecurityManager环境
11        DefaultSecurityManager defaultSecurityManager= new DefaultSecurityManager();
12        defaultSecurityManager.setRealm(simpleAccountRealm);
13        SecurityUtils.setSecurityManager(defaultSecurityManager);
14        Subject subject = SecurityUtils.getSubject();
15        //2.主体提交授权认证
16        UsernamePasswordToken token = new UsernamePasswordToken("jiuyue","12345");
17        subject.login(token);
18        //checkRole检查主体是否具有啥权限
19        //subject.checkRole("admin");
20        subject.checkRoles("admin","user");
21
22    }
23}

 

专题链接:

Shiro安全框架第一篇| 什么是Apache Shiro?

Shiro安全框架第二篇| Shiro的整体架构

                   “扫码关注“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值