忘记密码实现方案
在一般的web网站中,都无法避免的涉及帐号密码等的管理,有帐号,密码,也就有忘记帐号,密码,更可能有帐号密码被盗,这些帐号信息轻则使自己原来的历史信息丢失,严重可能涉及到帐号相关积分,金钱等等。
一般如何解决该问题呢?最简单的方案就是由管理员对帐号密码进行重置,如果普通用户遗忘帐号或密码时,可以通过邮件告知系统管理员,然后管理员进行重置操作,这种方式在一些企业内部系统中比较常用,复杂一点的,面向大众的系统中,因为没有系统管理员可以对所有用户进行直接认证,因此必须让用户能自主找回密码。自主找回密码又分几种实现,第一种,采用密码重置问题的形式,即在注册帐号密码时,须填写密码重置问题,密码重置答案,这样在忘记密码时则可以通过帐号和密码重置答案进行密码重置,这种实现方式如果帐号忘记了或者密码重置答案忘记了就无法进行。第二种,通过注册邮箱的形式找回帐号密码,因为考虑到大部分人就一两个常用邮箱,而注册邮箱一般也就采用这个常用的邮箱,常用邮箱的密码一般不会出现忘记的情况,所以这种方式在大多数网站中都比较常用,后面也会重点介绍。第三种,在QQ等网站中,也会根据用户经常登录的IP地址,历史密码,好友认证等方式进行忘记密码的重置功能,该方式实现起来相对复杂,需要记录的历史信息较多,比较少用。
通过注册邮箱找回密码,又分几种实现方式,一种是直接将随机密码发送到用户注册邮箱,用户使用该密码登录后,再更改自己适合的密码,该方式实现也较简单,但是对用户不是很友好,另外一种则是通用方式,即发送一个基于一定规则生成的随机码链接给用户,用户点击该链接后,即可任意更改密码,该方式出于安全的角度考虑,一般只能使用一次,而且会有相应的时效限制。因为如果可以使用多次,当你在浏览器地址栏输入该链接更改密码后,后面一个人也根据历史浏览记录,同样打开该链接,不就可以更改你的密码,然后拿到相应你的信息了?该随机码如何实现呢?
当用户点击“通过邮箱找回密码时”,通过用户的帐号,生成一个相关的随机码,然后将该帐号,随机码数据保存到数据库,再根据这些信息生成一个认证链接发送给用户,如果用户再次点击“通过邮箱找回密码时”,这时则需要先将之前的随机码置为无效,并将该次的认证信息发送给用户,当用户在邮箱中点击认证链接时,先判断该随机码是否是有效的,如果是有效,则进入更改密码的界面,如果不是,则提示该页面已过期,然后回到首页。