Node.js 在每个请求中包含承载令牌并保持用户登录
我在某个服务器上运行了一个API,当您向登录端点发送成功的请求时,它会为您提供一个JSONWEBTOKEN。 在我的第二台服务器上,我正在运行一个向API发送请求的网站。我想要的是保存用户登录时收到的JWT令牌,并将其保存,以便用户的下一个请求也会发送承载令牌,同时保持用户登录 我已尝试在请求中包括express session,使用Node.js 在每个请求中包含承载令牌并保持用户登录,node.js,jwt,express-session,Node.js,Jwt,Express Session,我在某个服务器上运行了一个API,当您向登录端点发送成功的请求时,它会为您提供一个JSONWEBTOKEN。 在我的第二台服务器上,我正在运行一个向API发送请求的网站。我想要的是保存用户登录时收到的JWT令牌,并将其保存,以便用户的下一个请求也会发送承载令牌,同时保持用户登录 我已尝试在请求中包括express session,使用 app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) 但我找不到如何准确
app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
但我找不到如何准确地使用它来完成文档中需要的工作
快速回答
我想要的是保存用户登录时收到的JWT令牌,并保存它
在web服务器中,创建令牌。所以你可以在任何地方存储(db)。当您需要撤销令牌或停止某些用户的任何活动等功能时,通常需要这样做。因此,您需要web管理员,删除此用户并标记电子邮件和/或令牌,因此当此用户执行新的http调用时,系统将显示“您的不允许…”
如果您没有此功能,请不要将令牌存储在服务器中。只需创建它并发送给用户。常见的javascript框架将在浏览器中的某个位置存储此令牌,如localstorage,当需要调用api时,javascript框架仅从localstorage获取令牌
因此,来自用户的每一个下一个请求也会发送承载令牌
如果前端中有一个有效的令牌,则可以将其用于api的下一个请求
同时保持用户的日志记录
这是另一个世界:从安全角度来看,强烈建议检测空闲用户并使其会话过期
无论怎样,如果您需要让用户保持登录状态,我将向您展示两种策略:
延长有效期(不推荐)
尽可能长时间配置express过期和令牌过期
刷新
在web服务器中创建一个端点,如/refresh。此端点将负责刷新web express服务器中的会话,并在令牌已过期时刷新令牌。最后,使用javascript(当前框架)的浏览器中的web int必须每隔一段时间到达其端点。有了它,您的会话和令牌将永远不会过期
这也有助于检测空闲用户。例如,使用javascript可以检测单击或其他事件。因此,在本例中,调用/refresh端点。活动用户将拥有有效的web express会话和续订的令牌。空闲用户不会触发此单击事件,因此不会调用/refresh endpoint。当user welcome执行单击时,/refresh端点将被调用,并且必须返回标志,指示web express会话已过期,令牌也已过期
外部化你的安全引擎 如果您有更多的网站、API、移动应用程序等,请阅读本节 基于当今世界级平台的工作方式,如果您有更多的网站/API等,我建议您使用oauth2 您的api中的/login端点更接近。您的工件将是:
- 安全服务器/引擎(管理身份验证和授权)
- 原料药
- 网
- 网站、系统或应用程序不得在其内部实现此逻辑。必须使用ajax从其web服务器后端(express)或浏览器中的javascript使用/登录
- 生成的令牌必须发送到web。web将把它发送到API
- Oauth2备选方案:
- 简易工作流程: