正如标题中所说,我想根据当前用户生成一个随机链接,用于电子邮件验证和密码修改。我认为它有两个需求:
-
它是随机生成的
-
symfony中的控制器可以告诉用户该链接对应于.
控制器仍然需要了解一些关于未加密用户的信息,比如UID。
除此之外,进行密码重置的一种方法是发送关于用户的一些其他信息的单向散列。例如,有一个函数可以做一些类似的事情:
function generateLink($user)
{
$hash = md5($user->email);
$url = '/reset-password/$uid/$hash';
return $url;
}
使用任何你想要的散列函数,MD5可能是不推荐的。然后,在另一端,做一些类似的事情:
function checkResetLink($uid, $hash)
{
$user = get_user($uid); // However you retrieve your user info
if($hash == md5($user->email)){
// Log in the user or do whatever you want.
}
}
如果你真的希望它是随机生成的,你可以生成一些随机哈希,并将其存储在用户记录中,然后在检查它时,使用uid检索该随机哈希,然后检查它是否相同。