Shiro的认证过程

  介绍

这篇文章主要讲解了“Shiro的认证过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shiro的认证过程”吧!

Shiro的架构了解之后,走一下调试跟一下认证的流程。使用领域来认证用户名密码。

使用领域访问数据库里的数据,

获取当前的主题

校验的主题是否已经登录

若没有认证则封装用户名密码

1.0创建表单页面,存储提交,

2.0请求提交到mvc的处理程序

3.0获取用户名密码

4.0执行登录:调用主题的登录(令牌)

5.0自定义领域,从数据库获取对应记录,返回给Shiro

领域实现类AuthenticatingRealm

 Shiro的认证过程

<节>
 protected  abstract  AuthenticationInfo  doGetAuthenticationInfo (AuthenticationToken  var1), throws  AuthenticationException; 
  

实现该方法

6.0 shiro完成对密码的比对

<节>
 currentUser.login(令牌),登录方法的实现void 登录(AuthenticationToken  var1), throws  AuthenticationException; 
  

向下走,看下实现

<节>
 <代码>公共无效登录(AuthenticationToken令牌)抛出AuthenticationException{ <代码>,代码,this.clearRunAsIdentitiesInternal();  <代码>,主题=this.securityManager主题。登录(这令牌); <代码>,字符串,主机=零; <代码>,,PrincipalCollection主体; <代码>,,如果(主题instanceof DelegatingSubject){ <代码>,,,,DelegatingSubject委派=(DelegatingSubject)主题; <代码>,,,代码,校长=delegating.principals;  <代码>,,,代码,主机=delegating.host;  <代码>,代码,其他}{ <代码>,,,,校长=subject.getPrincipals();  <代码>,代码,} <代码> 
<代码>,,如果校长!=零,,! principals.isEmpty()){ <代码>,,,这。校长=主体; <代码>,,,这。验证=true; <代码>,,,,如果(令牌instanceof HostAuthenticationToken){ <代码>,,,,,,主机=((HostAuthenticationToken)令牌).getHost(); <代码>,,,代码,} <代码>
<代码>,,,,如果(主机!=null){ <代码>,,,,,这。主机=主机; <代码>,,,代码,} <代码>
<代码>,,,会话,会话=subject.getSession(假); <代码>,,,,如果(会话!=null){ <代码>,,,,,这。会话=this.decorate(会话); <代码>,,,代码,其他}{ <代码>,,,,,这。会话=零; <代码>,,,代码,} <代码>
<代码>,代码,其他}{ <代码>,,,字符串,味精=靶3ご觭ecurityManager回来。登录(令牌)返回一个null或空值。,这个值必须非空和填充alt=" Shiro的认证过程">

认证流程走完,能够明确Shiro还是需要数据库中的数据来跟前台数据进行比对密码,如果不能跳转页面或者走到方法,需要在applicationcontext。xml中配置URL

感谢各位的阅读,以上就是“Shiro的认证过程”的内容了,经过本文的学习后,相信大家对Shiro的认证过程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

Shiro的认证过程