我正在开发一个Yii应用程序,该应用程序要求'users'表有一个列'token',它需要是一个基于表中该用户的唯一随机字符串(例如,永远不会有相同的令牌两次)。
任何人都可以给我一些关于这样做的提示,或者是否已经设置了Yii组件/扩展/生成器来执行此操作。
另外 - 对此最优化的db列类型是什么?
答案 0 :(得分:3)
我希望CSecurityManager与generateRandomString()
一起使用。请注意,它会生成一个包含字符〜和_
数据库列将是varchar
,其长度为字符串长度。
答案 1 :(得分:0)
我建议只使用hash,它产生长字符串并使用一些非常独特的字符串进行散列:
sha512($userName.time().rand(1000, 9999));