laravel auth系统使用bcrypt来保存密码。用户名(即电子邮件)是否可以这样做?我想避免任何客户电子邮件地址都在DB中保存纯文本。
编辑:
我不需要知道用户电子邮件的任何其他功能。我只希望用户能够使用他们的电子邮件地址登录。我只是想知道是否有一种简单的方法可以使用集成的laravel auth系统或者如果我需要自己编写整个auth逻辑
答案 0 :(得分:1)
根据哈希密码验证用户的一般流程是:
password_verify
这取决于以纯文本格式存储的用户名,否则无法执行第二步。如果您也要对用户名进行哈希处理,则该过程需要变为:
password_verify
理论上这是一种可行的方法,但它根本不具备可扩展性。步骤2要求将所有用户提取到内存中,或者通过它们进行分页,这两者都会增加显着的开销。验证散列数据(按设计)也是一项昂贵的操作,如果你必须为数据库中的每个用户执行两次,每次任何人登录时,你'我很快就会遇到麻烦。
我认为您可能缺少的一件事是password_hash
每次都会生成不同的哈希值,即使对于相同的输入字符串也是如此。这使得第二种方法无法工作,因为它可以防止查找单个用户。
此外,正如评论中所提到的,使用bcrypt进行任何散列都将保持不变。您可能不需要实际向用户发送电子邮件,但您也将无法在网站上显示其用户名,无论是在用户个人资料页面中还是在任何内容/等旁边。