shiro登陆认证过程原理

问题: shiro到底是如何认证的呢,原理是啥呢?

1、在登录页面开始登录 输入用户名和密码

在这里插入图片描述

2、后台接收到了登录请求,执行以下代码,然后开始认证

登录的过程将用户名和密码传入UsernamePasswordToken中
在这里插入图片描述

3、 然后进入DelegatingSubject的login方法

在这里所有安全操作都会委托给SecurityManager来执行
在这里插入图片描述

4、 开始进行认证方法

这个info就是UserRealm的doGetAuthenticationInfo方法(用于认证)返回的info
在这里插入图片描述

5、经过一系列的挑战,进入以下方法

这里才是真正的具体实现方法
在这里插入图片描述

6、然后进入doSingleRealmAuthentication方法,然后判断UserRealm是否支持token

在这里插入图片描述

7、下面就是重中之重,开始完成一系列的认证和密码匹配过程

我们这时候找到自定义Realm,UserRealm是shiro和数据认证和授权的桥梁,可以通过此类从数据库中获取用户信息和权限。

(1)、先从缓存中获取info
(2)、如果获取不到,就从UserRealm的doGetAuthenticationInfo方法中获取,在此方法中将数据库的加密后的用户密码获取,封装到info中并返回
(3)、对密码进行匹配,在ShiroConfig中配置了凭证匹配器,通过此配置对token中的密码进行加密,然后和封装在info中的密码(从数据库中获取的加密密码)进行匹配,如果成功就说明整个认证过程成功,失败就报错
(4)、登陆认证成功后,将info存入缓存中。同时将用户信息存入session中,这个session不是放在Tomcat中的session,而是属于shiro自己的session,shiro用DefaultWebSessionManager调用start()创建SimpleSession,并将SimpleSession放在redis中,并向前端返回一个sessionId。下次前端访问其他接口的时候,拦截器就会拦截此请求,就会判断SimpleSession是否存在该用户信息,如果存在就说明已经登录,不存在就拒绝访问。同时也可以通过Subject.isAuthenticated()判断是否登录

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值