gpt4 book ai didi

javascript - 具有 "persistence token"功能的 Node.js 身份验证库

转载 作者:数据小太阳 更新时间:2023-10-29 05:04:31 26 4
gpt4 key购买 nike

我有 passport for node 的工作知识,但它没有以下内容:

  • 生成“持久性 token ”(例如 authlogic/session/session.rb#L35
  • 为密码重置生成易腐 token
  • 记住我的功能
  • 管理一些模型类的登录/注销属性,等等。

Node.js 社区中是否有任何库解决了这个问题?如果有任何东西像 Devise for Rails 一样健壮(或者正在变得健壮) ,那将是完美的,但任何解决此 token 问题的方法都同样有效。

疯狂的是很多例子都在 session 中存储用户 id!

request.session['userId'] = user.get('id')

那只是要求被黑客攻击。

应该是这样的:

require.session['persistenceToken'] = App.User.generateRandomToken()

最佳答案

密码重置的一次性密码(又名一次性 token )策略是我将要实现的。考虑到 Passport 的架构,这很容易成为一个单独的模块,如果发现其他人已经实现了这样的东西,我也不会感到惊讶。

记住我,持久性 token 功能也是我想要支持的。最好,我也希望它成为一个单独的策略,但它可能需要一些核心支持。如果情况确实如此,req.logIn ( https://github.com/jaredhanson/passport/blob/master/lib/passport/http/request.js#L28 ) 中的一些额外行应该能够覆盖它。

至于在 session 中存储用户 ID,我认为没有什么大的风险,因为在默认情况下,在 Connect/Express 中, session 属性完全存储在后端并通过唯一的 sid< 查找 在加密的 cookie 中设置。恶意用户必须同时拥有唯一的 sid 和 session 密码才能欺骗请求。

Mozilla 正在使用 Passport 作为其身份识别工作的一部分,将 BrowserID 桥接到其他缺乏 BrowserID 支持的提供商(参见 browserid-bigtent)。根据他们的要求,开发人员可以确信 Passport 满足严格的安全要求。

(最终 Passport 中的 session 序列化是应用程序的责任,因此出于安全原因,如果需要,可以使用随机 token 代替用户 ID。显然,如果将数据直接存储在 cookie 中,应该这样做,但我会建议这样做是最不明智的做法。)

就管理模型上的这些属性而言,Passport 被设计为完全与模型/ORM 无关。我不打算改变这个事实,因为我认为这些决定最好留给应用程序(并且 Passport 由于委派了这种责任而更加灵活)。也就是说,我认为其他模块有空间在 Passport 之上独立构建以提供此功能。

综上所述,我认为 Passport 是现有 Node.js 身份验证解决方案中最强大的。您的前三个请求将大有帮助,而且它们应该很容易实现。我很乐意就这些功能进行合作,所以请随时与我联系。

最后,如果有人好奇,一流的 API 身份验证目前正在进行中,在 authinfo 上分支。在此基础上,passport-http-oauth实现OAuth服务器策略,可以结合oauthorize中间件作为组装 OAuth 服务器的工具包。这还没有完全完成,但准备就绪后将成为 Passport 的另一个有效功能。

关于javascript - 具有 "persistence token"功能的 Node.js 身份验证库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com