Lan*_*ard 6 javascript authentication node.js
是否有任何库在Node.js社区中解决了这个问题?如果有任何像Devise for Rails那样强大(或者它的强大之处),那将是完美的,但解决这个令牌问题的任何东西都可以正常工作.
疯狂的是很多例子都是将用户存储id
在会话中!
request.session['userId'] = user.get('id')
Run Code Online (Sandbox Code Playgroud)
这只是要求被黑客入侵.
它应该是这样的:
require.session['persistenceToken'] = App.User.generateRandomToken()
Run Code Online (Sandbox Code Playgroud)
用于密码重置的一次性密码(也称为一次性令牌)策略是我将要实现的.鉴于Passport的架构,这可以很容易地成为一个单独的模块,我发现其他人已经实现了这样的事情并不会让我感到惊讶.
记住我和持久性令牌功能也是我想支持的.我希望这也是一个单独的策略,但它可能需要一些核心支持.如果情况确实如此,那么req.logIn
(https://github.com/jaredhanson/passport/blob/master/lib/passport/http/request.js#L28)中的一些额外行应该能够覆盖它.
至于在会话中存储用户ID,我没有看到任何大的风险,默认情况下,在Connect/Express中,会话属性完全存储在后端,并由sid
加密cookie中设置的唯一查找.恶意用户必须拥有唯一的sid和会话密钥才能欺骗请求.
Mozilla使用Passport作为其身份工作的一部分,将BrowserID桥接到缺乏BrowserID支持的其他提供商(请参阅browserid-bigtent).鉴于他们的要求,开发人员可以确保Passport符合严格的安全要求.
(最终Passport中的会话序列化是应用程序的责任,因此出于安全原因可以使用随机令牌代替用户ID.显然,如果将数据直接存储在cookie中,则应该这样做,但我建议这样做这是最不明智的做法.)
至于在模型上管理这些属性,Passport被设计为完全模型/ ORM不可知.我不打算永远改变这一事实,因为我认为这些决定最好留给应用程序(和护照是委托该责任心的结果更灵活).也就是说,我认为其他模块还有空间在Passport之上独立构建以提供此功能.
总而言之,我认为Passport是现有Node.js auth解决方案中最强大的.你的前三个请求将会有很长的路要走,并且它们应该很容易实现.我很乐意合作开发这些功能,所以不要犹豫与我联系.
最后,如果有人好奇,那么authinfo分支上的第一类API认证目前正在进行中.在此基础上,护照-HTTP-的OAuth实现OAuth的服务器策略,这可以结合oauthorize middlware作为一个工具来组装OAuth服务器.这还没有完全出炉,但是当它准备就绪时它将是Passport的另一个有效功能.
归档时间: |
|
查看次数: |
4877 次 |
最近记录: |