Express会话和PassportJS之间的区别

时间:2016-01-09 22:47:36

标签: node.js express passport.js express-session

我正在考虑使用快速会话为针对OAuth 2提供商进行身份验证的用户存储访问令牌,并为客户端应用程序提供安全签名的cookie。

根据我的理解,我可以在会话存储服务器端的后续请求中检索与cookie相关联的令牌,例如mongodb,然后我可以在请求中使用承载授权标头使用Express分离端点路由。

我遇到了PassportJS,并试图弄清楚是否需要在我的设置中使用它。

目前我正在我的快递应用程序中处理登录POST请求,然后使用资源所有者密码凭据授予类型请求流来发出访问令牌请求。这工作正常,我收到了一个访问令牌以及提供商的刷新令牌和到期时间。

据我所知,PassportJS为各种提供商提供了身份验证策略,但我不确定它是否支持在我的情况下使用的授权类型。另外,我已经在做请求和接收令牌的工作了,所以不确定PassportJS对我有多大好处。

通过阅读快速会话文档,我认为这将为我提供所需的一切,而且我可以根据从api网关返回的令牌到期时间设置cookie到期时间。

我认为PassportJS位于快速会话之上,只是访问快速生成的会话,这是正确的吗?

1 个答案:

答案 0 :(得分:1)

如果您已经实施了所需的身份验证策略,并且只需要存储令牌来识别用户并让他们保持登录状态,那么您只需要快速会话。快递会话使用的会话cookie在读取等时进行签名和验证

  

我认为PassportJS位于快速会话之上,只是访问快速生成的会话,这是正确的吗?

是的,这是正确的。但是,您不必使用Passport.js会话(请参阅Passport.js文档中的“禁用会话”)

Passport.js文档(http://passportjs.org/docs)还澄清了Passport.js只是身份验证中间件:

  

它旨在用于单一目的:验证请求。在编写模块时,封装是一种优点,因此Passport会将所有其他功能委托给应用程序。