介绍
这篇文章主要讲解了“Shiro的认证过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shiro的认证过程”吧!
Shiro的架构了解之后,走一下调试跟一下认证的流程。使用领域来认证用户名密码。
使用领域访问数据库里的数据,
获取当前的主题
校验的主题是否已经登录
若没有认证则封装用户名密码
1.0创建表单页面,存储提交,
2.0请求提交到mvc的处理程序
3.0获取用户名密码
4.0执行登录:调用主题的登录(令牌)
5.0自定义领域,从数据库获取对应记录,返回给Shiro
领域实现类AuthenticatingRealm
<节>
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的认证过程