我正在编写一个 nodejs 应用程序,我想将它用作 Web 应用程序以及 API 提供程序。一旦用户通过身份验证,我想为该用户分配一个 token 以用于后续请求。这非常适用于 Web 应用程序的 Passport ,因为我只是在 session 中使用 token 序列化和反序列化用户。但是,在响应 API 请求时,没有设置 cookie 来存储 session 信息。理想情况下, Passport 会在 session 和请求正文中查找 token 。有没有办法配置 Passport 来完成这个?
最佳答案
只需在每个请求上使用访问 token 。不需要使用 session 。以下是工作流程:
POST /signin
- 用户名和密码发布在客户端请求中。
- 服务器使用 Passport 的本地策略对用户进行身份验证。见 passport-local .
- 如果凭据代表有效用户,则服务器返回某个生成器生成的访问 token 。 node-jwt-simple是个不错的选择。
- 如果凭据无效,请重定向到
/signin
。
当客户端从授权服务器接收到访问 token 时,它就可以向服务器上的 protected 资源发出请求。例如:
GET/api/v1/somefunction?token='abcedf'
- 客户端使用 token 参数调用一些服务器 api。
- 服务器使用 Passport 的承载策略对 token 进行身份验证。见 passport-http-bearer .
引用文献
Make a secure oauth API with passport.js and express.js (node.js)
关于node.js - nodejs Passport 身份验证 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17397052/