我想在我的用户登录模块中添加“忘记密码”功能,因为我已经创建了密码恢复操作,当用户输入电子邮件系统时,将检查邮件是否存在,如果存在,它将向用户发送邮件. 我想知道的是如何在该邮件中包含用户当前密码和用户名。
我怎样才能做到这一点 ?
你永远不会这样做,永远,永远,你发送一个密码恢复哈希,并添加一个带有时间的令牌到你的数据库,然后通过电子邮件将哈希发送给丢失密码的用户。不要明文存储密码,这会违反客户端密码安全性,并且如果您的数据库遭到破坏,它将向您的整个用户群释放用户名和密码组合。
将密码存储为:
DB.userTable.setTupple(username,sha1(username+"optionaldelimiter"+password));
检索密码为:
resetPasswd(username : string, hash : string, newPasswd: string)
{
tup = DB.recoveryTable.fetchTupple(username,hash);
if( tup != null && tup.expiresAt <= Date.now())
{
DB.setPasswd(username,newPasswd);
}
}