Express会话和PassportJS之间的区别

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

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

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

目前,我正在使用快速应用程序处理loginPOST请求,然后使用资源所有者密码凭据授予types请求stream来发出访问令牌请求。 这工作正常,我收到一个访问令牌以及来自提供程序的刷新令牌和到期时间。

据我所知,PassportJS为各种提供者提供了authentication策略,但是我不确定它会支持在我的情况下使用的授予types。 另外我已经在做请求和接收令牌的工作,所以不知道PassportJS对我有多大的好处。

从阅读快速会议文档,我认为这将给我所有我需要的,再加上我可以设置cookie的到期时间,我从api网关得到的令牌到期时间。

我认为PassportJS坐在快速会话之上,并且简单地访问快速生成的会话,是正确的吗?

如果您已经实施了所需的authentication策略,并且只需要存储令牌来识别用户并保持login状态,那么快速会话就是您所需要的。 快速会话使用的会话cookie在读取时被签名和validation等。

我认为PassportJS坐在快速会话之上,并且简单地访问快速生成的会话,是正确的吗?

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

Passport.js文档( http://passportjs.org/docs )也阐明了Passport.js只是身份validation中间件:

它旨在服务于一个单一的目的:validation请求。 在编写模块时,封装是一种优点,所以Passport将所有其他function委托给应用程序。