写这篇文章主要是记住自己所学过的知识点,二就是学习过程
从网上下载小demo然后根据demo自己改需求,慢慢的理解了shiro的一些基本的用法,但是好奇他是如何去验证我们的密码的所以学习网上的方法跟踪源码发现。
首先在这里打个断定
首先他会进入这个subject.login 方法进行登入密码验证debug模式进入
进入这个实现类
然后他会把这个验证的过程交给securitymanager.login
进入这个方法看看
走标红线的方法
继续往下看
这里判断你有没有自己定义的realms如果有他会走你的realms
继续
往下走
走这个方法
进去之后选择进入你自己的realm,这个userRealm是我自己写的realm点进去看看
最终他会返回一个SimpleAuthenticationInfo然后回到刚刚调用的方法
一号位置是刚刚进去查找realm时候的方法返回信息后走二号方法
进行密码验证
进去后你会发现CredentialsMatcher这个类是不是有点熟悉一开始我没发现,一直去找程序是用什么方式加密的,这个类就是设置加密方法的可以在自己的realm里面设置如图:
接着刚刚的方法进行密码验证
进入这个方法这个实现类
进入加密的方法里面看看
这里就对自己登入的时候输入的明文密码进行自己要求的加密方式进行加密,自己要求加密的方式是刚刚上面讲的设置加密方法。和下图是一样的
接下来就是返回密码对比的结果true还是false
这个就是shiro大致的登入密码验证过程,如果有不足可以指正,因为自己比较懒,所以截图比较多
shiro登入验证的过程详解
最新推荐文章于 2022-08-24 04:42:13 发布