node.js - 用于 Web 应用程序 JWT 的 Nodejs Express,带有数据库或 session 来对用户进行身份验证

标签 node.js express session jwt

我正在开发一个带有 Express 服务器的 NodeJs,我在 JWT 身份验证方面遇到了很多问题,而 JWT 身份验证应该是新标准。

主要问题是当我的应用程序中有管理员用户管理器部分时。我不知道删除或避免客户端 token 访问的“好”方法。

我读到过有关使用定义了较短到期时间的 token 制作黑名单数据库的信息,但其想法是允许用户登录数月,而不必重写登录数据(例如facebook)。在这种模式下我认为黑名单数据库将是一个巨大的数据库。

另一种选择可能是将所有 token 保留在数据库中,并在删除用户时验证针对该数据库删除 token 的所有请求。

或者简单地验证针对用户数据库测试的所有请求(如果用户存在)。此方法使用大量数据库交互。

我可能会遇到关于同一用户在不同设备中使用 token 的问题。

另一方面,在前端,我必须通过 ajax 进行导航或将 token 动态添加到所有 href 链接。 (可能是更好的方法?)

我必须使用其中任何一种方法吗?有更好的解决方案吗?使用 session 可以更好吗?

最佳答案

如果您创建自己的 JWT,则可以将该类型的信息存储在 token 本身中。 角色:“用户”isAdmin = true。然后,当在客户端应用程序上使用 token 时,如果他们不是管理员,则不会显示这些页面。

确保服务器上的 API 调用验证 token ,并检查权限。即使有人使用他们的客户端访问 token 从网络到管理端点(页面意外显示或 super hax0rs),服务器也应该拒绝。

如果访问类型不经常更改(例如“管理员或非管理员”),则这种方法有效。您可能不会一直将用户升级为管理员。如果您尝试使用相同的方法来获取经常更改的更具体的访问权限,则会一团糟,因为您需要不断重新颁发 token 或编辑 token (这更困难)。

关于node.js - 用于 Web 应用程序 JWT 的 Nodejs Express,带有数据库或 session 来对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54445273/

相关文章:

javascript - Sequelize 保存/创建方法仅适用于 CRUD 应用程序的第一次

javascript - Bluebird promisified 库的结果作为错误返回

node.js - 绑定(bind)路由到 '/'就是响应Express中的所有404?

php - 如何修改以下需要全局 session 打开到全局 session 关闭的代码

php - 多级登录页面根据用户角色php将用户重定向到不同的页面

node.js - 收到状态为 : 403 at Object.exports.createStatusError 的 http2 header

node.js - 查询后Firebase管理数据库快照数据?

node.js - 无法让 Handlebars 部分与 Express 配合使用

node.js - 错误 : Could not execute GraphicsMagick/ImageMagick: identify "-ping" "-format" "%wx%h"

java - 如果浏览器关闭,JSF session 过期阶段监听器