问题标签 [express-jwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10751 浏览

javascript - Node js、JWT 令牌和背后的逻辑

我正在使用 JWT 保护节点 js url https://github.com/auth0/express-jwt

要创建 JWT 令牌用户会话,我只需执行以下操作:

或者在登录调用的情况下

每次调用受保护的 url 时,我都会检查req.userJWT 中间件是否自动设置。

现在我想知道:

1 - 调用 sign() 时 JWT 令牌存储在哪里?

2 - 每次调用受保护的 url 时我都必须验证()令牌吗?如果是,为什么?

3 - 当我为已签名的用户设置新令牌时,旧令牌(如果存在)会被删除吗?如果到期未设置或例如为 5 年怎么办?

4 - 为什么我不能在同一浏览器/应用程序页面上设置新令牌?如果我注册一个新令牌但令牌匹配(我检查过),我会收到无效签名错误这就像我不能在同一个浏览器上登录超过 1 个用户

0 投票
3 回答
21085 浏览

node.js - Json Web 令牌不会过期

我刚刚实现了一个 json Web 令牌身份验证,在我的后端我将创建的令牌发送给jsonwebtoken客户端,如下所示:

在客户端,我只是将此令牌存储到 SessionStorage。问题是令牌在一分钟后不会过期,我错过了什么吗?

编辑:我实现了这篇文章中显示的相同的东西。

0 投票
1 回答
1129 浏览

node.js - 如果没有它可以解密,那么签署jwt有什么意义

我正在试验jwt,在做一些研究时我发现了这个 JWT DECODER我想我必须输入令牌和我的密钥来解密令牌。

但我很惊讶地看到它只需要令牌来解密它。如果没有它可以解密,那么密钥有什么用。令牌中的所有用户数据将对任何人开放。

我在这里错过了什么吗?

我的另一个问题是 jwt 如何帮助防止MITM

谢谢

0 投票
1 回答
791 浏览

node.js - 带有 $window.localStorage 的 Express-jwt 抛出 SyntaxError

我正在关注本教程:https ://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

当从前端向 /restricted 发出 http 请求时,我在 cmd 中收到此错误:

等等。

我将展示我的代码的简化版本。

节点JS:

登录功能,以令牌响应:

限制访问的设置等。

AngularJS:

请求拦截器:

推送拦截器的配置:

对 /restricted 的 HTTP 请求:

我的代码和教程代码之间唯一明显的区别是我使用的是 localStorage 而不是 sessionStorage。

0 投票
1 回答
71 浏览

node.js - 使用节点的回调样式

我有这个代码结构:

如果我将该return next(err);行注释掉,代码效果很好。那么,如果我将它与 res.send(401) 结合使用,那么它的好处在哪里,完全有可能。

我读到这个:http ://howtonode.org/control-flow-part-ii并开始理解它的意思,但还没有。

0 投票
1 回答
815 浏览

express - 使用 Express-jwt,如何使用路由别名?

这是布线路由的快捷方式:

但是当我使用别名来连接路由时 (express >= 4) ..

... jwt 不起作用。

0 投票
0 回答
1754 浏览

jwt - JSON 网络令牌大小

我目前正在使用 node-jsonwebtoken ( https://github.com/auth0/node-jsonwebtoken ) 库来生成身份验证令牌。我只是调用 jwt.sign 来生成令牌。

在我的登台和开发服务器上,生成的令牌是 941 个字符,但在我的生产服务器上(CPU 数量是 8 倍,RAM 更大,但没有其他差异),它要大得多(>8KB)。有谁知道这是为什么 - 我现在最好的猜测是它是基于我的 RAM 或多个 CPU 生成的,但这只是一种相关性。

我应该怎么做才能降低令牌的大小?在我的客户端上,我不允许发送标头超过 8KB 的请求。

谢谢

0 投票
2 回答
18684 浏览

access-token - JSON Web 令牌 (JWT) 优于数据库会话令牌

使用数据库会话令牌系统,我可以让用户使用用户名/密码登录,服务器可以生成一个令牌(例如 uuid)并将其存储在数据库中并将该令牌返回给客户端。来自那里的每个请求都将包含令牌,服务器将查找令牌是否有效以及它属于哪个用户。

使用 JWT,由于服务器上保存的密钥和客户端保存并随每个请求发送的签名令牌的组合,因此无需将任何关于会话/令牌的内容保存到数据库中。

这很好,但除了保存数据库检查每个请求(无论如何都会很快,因为它只是检查哈希表),我不清楚使用 JWT 有什么好处。有熟悉这个的能解释一下吗?让我们忽略 cookie,它特别是如上所述的数据库自定义令牌和我试图比较和理解其好处的 JWT

0 投票
2 回答
18395 浏览

node.js - Supertest,测试安全的 REST API

我正在为受jwt. 一个 API 操作 POST/user/token返回jwt给定的 ausername和 a password,然后此令牌用于一系列操作,例如:

路由使用的位置jwt({secret: secret.secretToken}),因此令牌包含在 HTTP 标头Authorization中。

使用 supertest 进行测试时,我可以进行嵌套测试,但我想先获取令牌,然后使用此令牌测试其他操作。

如何避免为每个操作测试生成一个新令牌(见下文),但只使用一个由 POST /user/token 生成的令牌。

0 投票
1 回答
11956 浏览

angularjs - 使用 angular 和 express-jwt 实现刷新令牌

我想使用 angular、nodejs 和 express-jwt 实现带有 json web 令牌的滑动过期概念。我对如何做到这一点有点困惑,并且正在努力寻找刷新令牌的任何示例或与这些技术/框架的会话相关的其他材料。

我想到的几个选择是

  • 在初始登录后为每个请求生成一个新令牌
  • 跟踪服务器端发出的令牌

但老实说,我不确定,请帮助