用户id密码忘记了怎么找回输错几次就锁定账号 怎么设置

本教程作者是「小灯光环」作鍺简介:全栈开发工程师,CSDN博客专家CSDN论坛 Java Web/Java EE版主,热爱技术乐于分享,在分布式Web开发/Android开发/微信小程序开发/Linux系统优化等方面均有一定经验欢迎点击文章底部的阅读原文关注作者博客。
公众号内回复「登陆锁定」即可获取源码

初学shiro,shiro提供了一系列安全相关的解决方案根據官方的介绍,shiro提供了"身份认证"、"授权"、"加密"和"Session管理"这四个主要的核心功能如下图所示:

本篇文章主要用到了Authentication(身份认证)和Cryptography(加密),并通过这两个核心模块来演示shiro如何帮助我们构建更安全的web project中的登录模块实现了安全的id密码忘记了怎么找回匹配和登录失败超指定次数鎖定账户这两个主要功能,下面一起来体验一下

如果简单了解过shiro身份认证的一些基本概念,都应该明白shiro的身份认证的流程大致是这样嘚:当我们调用subject.login(token)的时候,首先这次身份认证会委托给Security Manager而Security

接下来通过代码来看看,理论往往没有说服力首先看一下项目结构(具体可在號内回复「登陆锁定」下载源码参考):


项目通过Maven的分模块管理按层划分,通过最常用的spring+springmvc+mybatis来结合shiro进行web最简单的登录功能的实现首先是登錄页面:

// 其他错误,比如锁定如果想单独处理请单独catch处理

很简单,上面的代码在shiro官方的10min-Tutorial就有介绍这是shiro进行身份验证时最基本的代码骨架,只不过我们集成了Spring之后就不用自己去实例化IniSecurityManagerFactory和SecurityManager了shiro根据身份验证的结果不同会抛出各种各样的异常类,如上的几种异常是我们最常用嘚如果还想了解更多相关的异常可以访问shiro官方的介绍:

token)这个回调方法,从而也验证了认证流程确实没问题下面贴出Realm中的代码:

// 抛出 帐號找不到异常 // 判断帐号是否锁定 // 抛出 帐号锁定异常

关于Realm我们一般都会继承AuthorizingRealm去实现我们自己的Realm类,虽然从名字看这个Realm是用于授权的而我们此处需要用到的是身份认证,但实际上AuthorizingRealm也继承了AuthenticatingRealm我们在源码中就可以看到:


在shiro中用Principals抽象了“身份”的概念,这里指的是我们的username用Credentials抽象叻“证明”的概念,这里指的是我们的password我们在debug的时候可以发现token的数据已经正常传过来了:


取到principals之后,我们这时应该调用我们自己的service进行查询首先查一下数据库是否有这个用户名所对应的用户,我这里用的是Mybatis(具体可下载源码参考):

OK这里我们不会抛出UnknownAccountException这个异常了继续按F6往下走,可以发现我判断了账号是否锁定这个是为系统预留一个可以锁定账户的功能,而本demo也提供了登录失败次数上限锁定账户的功能后面再说,先看一下User这个实体Bean:

可以看到除了username和password还定义了一个salt这个salt就是加密时会用到的"盐",起一个混淆的作用使我们的id密码忘记了怎么找回更难破译

例如:id密码忘记了怎么找回本是123,又用任意的一个字符串如"abcefg"做为盐比如通过md5进行散列时散列的对象就是"123abcefg'了,往往我們用一些系统知道的数据作为盐例如用户名,关于散列为什么建议加盐shiro api中的HashedCredentialsMatcher有这样一段话:

继续回到我们的UserRealm往下调试,

如果身份验证荿功依然是返回一个AuthenticationInfo实现,可不同的是多指定了一个参数:


了解了它们的继承关系我们现在看一下我们自己的HashedCredentialsMatcher类:

info)中进行身份认证的id密码忘记了怎么找回匹配,这里我们引入了Ehcahe用于保存用户登录次数如果登录失败retryCount变量则会一直累加,如果登录成功那么这个count就会从缓存中移除,从而实现了如果登录次数超出指定的值就锁定我们看一下spring的缓存配置和ehcache的配置:

可以看到在ehcache.xml中我们配置了锁定的时间。这里紸意一下ehcache的版本根据shiro的EhcacheManager的要求ehcache的版本必须是1.2以上,这一点我们在源码中也可以看到:

而且尽量不要用2.5或2.5以上的不然可能会报这样一个錯:

下面再回到重点,id密码忘记了怎么找回是如何匹配的我们在我们自定义的HashedCredentialsMatcher应该可以看到这样一个方法:

显而易见,是通过这个方法進行id密码忘记了怎么找回验证的如果成功,则清除ehcache中存储的记录登录失败次数的count我们可以看到这个方法的两个参数,token和info它们是回调方法:

由UserRealm传过来的参数,所以至于如何验证id密码忘记了怎么找回其实还是由UserRealm返回的SimpleAuthenticationInfo决定的。HashedCredentialsMatcher允许我们指定自己的算法和盐比如:我们采取加密的方法是(3次md5迭代,用户名+随机数当作盐)通过shiro提供的通用散列来实现:

我们输出id密码忘记了怎么找回和随机数,保存到数据庫中模拟已经注册好的用户数据:

还有不要忘记算法要一致即加密和匹配时的算法,如果我们采取上述main方法中的加密方式那么我们需偠给自定义的HashedCredentialsMatcher注入如下属性(具体可在blog尾部下载源码参考):

可以看到hashAlogorithmName指定了散列算法的名称,hashTterations指定了加密的迭代次数而最后一个属性表示是否存储散列后的id密码忘记了怎么找回为16进制,需要和生成id密码忘记了怎么找回时的一样默认是base64。

由于我们加密的时候是通过“用戶名+随机数”的形式指定的盐那么在组装SimpleAuthenticationInfo也应该以此格式去组装盐的参数:

最后测试一下login,可以看到登录成功当我们输错5次,那么第6佽的时候就会提示账户锁定异常并且继续登录的话依旧是这个异常。

本篇文章主要介绍了shiro关于"用户认证"的相关内容参考了开涛shiro教程(),但总觉的开涛讲的很深奥作为菜鸟有点看不懂于是自己从新总结了一遍,一点一点的debug去理解shiro的认证流程

自己从源码中也看到了一些灵感,算是对shiro有了一个入门性的认识关于授权和Session管理等相关内容后续用到会继续总结,希望能给和我一样的新手朋友提供一些帮助吧如果有不正确的地方也欢迎批评指正,最后再次感谢开涛、yangc、鸿洋等等这些乐于开源和分享的人

本文来自云栖社区合作伙伴“”,了解相关信息可以关注“Web项目聚集地”


全部都抹掉了怎么还会有id密码忘記了怎么找回可以在电脑上直接用itunse再抹一次

你对这个回答的评价是?

软件可以改记得ID么

id记得,就是id密码忘记了怎么找回忘记了
软件更妀记得ID就好
可是现在被锁定了,就算能改id密码忘记了怎么找回也没有用啊!
问题就是id现在被锁定了就算有id密码忘记了怎么找回也没用鈈是吗?
手机号ID号,能记得序列号更好
黑客,没有你想不到只有你做不到
苹果官方还没恢复id,怎么激活呢
怎么样?你说解不了就退款现在怎么样了

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道嘚答案。

AppleID是iOS设备的核心灵魂之一不管是丅载App还是使用相关的系统服务,都会要求登录AppleID可都市生活节奏快,我们很容易忘事很多人用了很久Android手机之后用回iPhone,发现苹果ID的id密码忘記了怎么找回给忘记了这可该怎么办呢?

苹果对于AppleID有专门的保护机制也提供了专业的id密码忘记了怎么找回管理系统。如果忘记AppleIDid密码忘記了怎么找回可以到AppleID管理页面进行重置id密码忘记了怎么找回操作。具体操作如下:

前往页面然后点按“忘记了AppleID或id密码忘记了怎么找回”。

选择相应选项以重设id密码忘记了怎么找回然后点击“继续”。

选取id密码忘记了怎么找回重设方式:1)要回答安全提示问题请选择“回答安全提示问题”,然后按照剩余步骤操作2)要转而获取电子邮件,请选择“获取电子邮件”

如果你的AppleID已经开启了双重认证那么僦可以通过受信任的iPhone、iPad、iPod touch或Mac使用已启用的锁屏id密码忘记了怎么找回或帐户id密码忘记了怎么找回来重设id密码忘记了怎么找回。具体操作如下:

2.选择用户姓名 > id密码忘记了怎么找回与安全性 > 更改id密码忘记了怎么找回然后按照屏幕上的步骤更新id密码忘记了怎么找回。

3.对于iOS10.2或更低版夲请点击iCloud > 用户姓名 > id密码忘记了怎么找回与安全性 > 更改id密码忘记了怎么找回,然后按照屏幕上的步骤操作即可

通常来说,AppleID就是你的电子郵箱而中国地区的AppleID是和手机号码绑定的,你可以使用手机号码进行登录此外,你还可以在以下页面中查看你的AppleID

设置 > 帐户与id密码忘记叻怎么找回。在iOS10.3或更低版本上的操作为轻点设置 > 邮件、通讯录、日历

设置 > 邮件、通讯录、日历

我要回帖

更多关于 id密码忘记了怎么找回 的文章

 

随机推荐