Kev*_*hou 7 authentication node.js express passport.js
我正在创建一个具有用户身份验证的站点,我计划使用邀请或其他方法来限制访问。
该站点基于 Node、Express 和 MongoDB 构建。我打算使用 Passport JS,主要是因为它是我学到的唯一方法(这是我的第一个个人项目)。
我唯一的想法是注册页面上的“秘密代码”。因此,只有那些我告诉代码的人才能注册。我觉得有更优雅或更安全的方法来处理这个问题,并且希望得到任何建议!
我认为您的想法原则上是正确的 - 这与用于游戏注册/测试版密钥的方法相同。您为您邀请注册的每个用户生成一个唯一的“密钥”。他们使用该密钥注册,并在您的数据库中标记为“已使用”;这可以防止其他用户发现该密钥并重新使用它。
您也可以以基本相同的方式使用电子邮件地址。用于注册的电子邮件地址必须在您的“邀请列表”中。当您通过发送“单击此链接以确认”电子邮件来“确认”地址时,您将必须生成另一个密钥以确保真实性。
因此,在使用受邀电子邮件注册后,您可以生成key如下:
require('crypto').randomBytes(48, function(err, buffer) {
var key = buffer.toString('base64');
// then save the key with the new user in the database
});
然后发送一封带有确认链接的电子邮件,其中包含key,例如:
https://www.mywebsite.com/users/confirm_email/{key}
此链接将在您的服务器上调用“confirm_email”操作,查找指定的key,并启用与其关联的帐户。
您可能希望在每次创建密钥时添加一个到期时间,以增加安全性。也许只有 24 小时才能确认电子邮件。
| 归档时间: |
|
| 查看次数: |
4799 次 |
| 最近记录: |