【发布时间】:2012-08-07 07:21:16
【问题描述】:
例如,现在我只需要为持久的“记住我”登录生成令牌。要生成我正在使用的那些令牌:
sha1(uniqid(mt_rand(), true))
它总是在 [0-9a-f] 中生成 40 个字符,如下所示:
64070e8f3d155550b04272eae330d23896e043e6
我可以为密码重置功能和电子邮件帐户验证以相同的方式生成令牌吗?一般来说,我可以使用一种代币生成机制来满足我的所有代币需求吗?还是我可能必须为不同的需求使用不同类型的令牌?
【问题讨论】:
-
既然我们不知道您的需要是什么——那么是的,您可以将相同的令牌机制用于您需要某种独特的 40 个字符串的任何目的。但是,如果您已经拥有
uniqid,为什么还要使用SHA1,我会坚持使用uniqid。 -
现在我的需求是:token 是持久登录的 cookie 值;令牌位于用户在电子邮件中点击的密码重置 URL 中;令牌在电子邮件验证 URL 中,用户在电子邮件中单击。我使用这种功能组合是因为..当我研究用于持久登录的最佳令牌时,这就是我从 SO 中想到的。我如何确定令牌是否需要是唯一的还是有点唯一的?