在Symfony2中,如何为电子邮件验证和密码修改生成随机链接?

时间:2014-09-28 11:16:55

标签: symfony

正如标题中所说,我想基于当前用户生成随机链接,以进行电子邮件验证和密码修改。我认为它有两个要求:

  1. 它是随机生成的

  2. symfony中的控制器可以告诉用户此链接对应。

1 个答案:

答案 0 :(得分:1)

控制器仍然需要了解有关未加密的用户的信息,例如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检索那个随机哈希,并检查它是否相同。