shiro登录认证过程

简介: shiro登录认证过程


shiro登录认证过程


登录方法

image.png

可以看到已经获取到了username、password和rememberMe  ,为了接下来的认证过程,我们需要获取subject对象,也就是代表当前登录用户,并且要将username和password、rememberMe  两个变量设置到UsernamePasswordToken对象的token中,  调用SecurityUtils.getSubject().login(token)方法,将 token传入;


下面来看 subject.login(token)方法

image.png


主要通过securityManager安全管理器调用securityManager.login(this, token);方法,


下面来看

image.png


方法中定义了AuthenticationInfo对象来接受从Realm传来的认证信息,进入authenticate(token)方法中

image.png


继续跟进去,进入authenticator.authenticate(token)方法

image.png


再继续跟进去看doAuthenticate(token)方法的实现

image.png


其中,this.assertRealmsConfigured();是判断当前的realm是否存在,不存在则抛出异常

image.png

当前项目中只配置了一个realm,则会进入doSingleRealmAuthentication((Realm)realms.iterator().next(),  authenticationToken)方法,并且会将  realm和token作为参数传入,这里的realm其实就是自己定义的UserRealm,继续进入doSingleRealmAuthentication方法

image.png


这里会先判断realm是否支持token,然后进入else方法执行realm.getAuthenticationInfo(token)方法,继续跟进

image.png


 this.getCachedAuthenticationInfo(token)这个方法是从shiro缓存中读取用户信息,如果没有,才从realm中获取信息。如果是第一次登陆,缓存中肯定没有认证信息,所以会执行this.doGetAuthenticationInfo(token)这个方法,

image.png


在执行登录认证的时候需要选择我们自己实现的realm方法

image.png


读取数据库信息进行验证,并封装成SimpleAuthenticationInfo中返回

再次查看getAuthenticationInfo

image.png


assertCredentialsMatch(token, info)方法用于密码校验,点进去可以看到

image.png


cm.doCredentialsMatch(token, info)执行密码校验

image.png


点进去可以看到

image.png


通过从token中取出的密码与从数据库取出的info中的密码进行比较,认证相同返回true;失败就返回false,并抛出AuthenticationException,将info返回到defaultSecurityManager中,到此认证过程结束


相关文章
|
2月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
36 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
shiro登录认证后不执行授权doGetAuthorizationInfo的解决
shiro登录认证后不执行授权doGetAuthorizationInfo的解决
shiro登录认证后不执行授权doGetAuthorizationInfo的解决
|
安全 Java 数据安全/隐私保护
SpringSecurity 认证流程
通过了解SpringSecurity核心组件后,就可以进一步了解其认证的实现流程了。
114 0
|
7月前
|
SQL 安全 前端开发
Security登录认证流程分析
Security登录认证流程分析
76 5
|
安全 API
04 Shrio身份认证流程
04 Shrio身份认证流程
52 0
04 Shrio身份认证流程
|
存储 安全 Java
SpringBoot集成shiro认证,实现Shiro认证的登录操作
SpringBoot集成shiro认证,实现Shiro认证的登录操作
236 0
SpringBoot集成shiro认证,实现Shiro认证的登录操作
|
存储 缓存 安全
2021年你还不会Shiro?----2.Shiro实现登录功能(身份认证实践)
上一篇介绍了Shiro的架构,我们可以发现Shiro核心的东西并不多,我们花个几分钟就可以把Shiro的机构记清楚,其中Security Manager就是Shiro的核心,他包含了身份认证器Authenticator、授权器Authorizer、Session管理Session Manager、缓存管理Cache Manager。这一篇我们就介绍下Shiro的身份认证的过程,也就是我们说的用户登录。
155 0
2021年你还不会Shiro?----2.Shiro实现登录功能(身份认证实践)
|
Java 数据库
Shiro识别多种用户进行登录
Shiro识别多种用户进行登录
|
Java 数据安全/隐私保护
【Shiro】1、Shiro实现登录授权认证功能(中)
之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧
136 0
|
安全 Java 数据库连接
【Shiro】1、Shiro实现登录授权认证功能(上)
之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧
319 0