Node.js 具有JWT注销路由的节点,我需要在注销路由的主体上传递什么?

Node.js 具有JWT注销路由的节点,我需要在注销路由的主体上传递什么?,node.js,jwt,jwt-auth,Node.js,Jwt,Jwt Auth,我用的是这个例子:邮递员和所有的路线都很好,除了/注销 我正在使用令牌传递承载令牌,就像我在books.js Get和Post/books路由中所做的一样,但是我得到了错误: “ReferenceError:未定义t” 我想我需要在身体上传递一些东西,但我不知道是什么 路线: app.post('/logout', (req, res) => { const { token } = req.body; refreshTokens = refreshTokens.filter

我用的是这个例子:邮递员和所有的路线都很好,除了/注销

我正在使用令牌传递承载令牌,就像我在books.js Get和Post/books路由中所做的一样,但是我得到了错误:

“ReferenceError:未定义t”

我想我需要在身体上传递一些东西,但我不知道是什么

路线:

app.post('/logout', (req, res) => {
    const { token } = req.body;
    refreshTokens = refreshTokens.filter(token => t !== token);

    res.send("Logout successful");
});

您将
filter
的回调元素命名错误。它应该是
t

refreshTokens = refreshTokens.filter(t => t !== token);

此外,要将新值分配给
刷新令牌
,不能将其声明为
const
。您可能想使用

这方面几乎没有问题。让我们来解决这个问题。这篇文章可能会很长,所有错误都会一个接一个地突出显示,以帮助您理解它。首先,您必须了解AccessToken和RefreshToken的两个区别,让我在最后讨论一下。前几次更正

在github文件行
#22
中定义以下内容

const refreshTokens = [];
var refreshTokens = [];
var accessTokens = [];
但它应该是var或let not const,因为您将在其中添加更多值。常量用于不改变。还有一件事你忘了在这里添加accessTokens。所以现在修改它如下

const refreshTokens = [];
var refreshTokens = [];
var accessTokens = [];
在第35行,您正在创建访问令牌,所以也可以通过在refereshTokens行下面的38后面添加以下内容来将其添加到此数组中

accessTokens.push(accessToken)
所以,您已经保存了这两个令牌,现在当您想要按照您的编码注销时,您似乎想要删除刷新令牌,正如@pzaenger建议的那样

refreshTokens = refreshTokens.filter((t) => t !== token)

这将删除您的refreshToken,但您的accessToken仍然有效,没有太多功能,因此不确定。您还需要在标题中添加您的令牌作为授权,而不是在正文中。

猜它应该是
(t=>t!==token)
@pzaenger谢谢您的帮助,现在我得到了“TypeError:Assignment to constant variable”是
刷新令牌
声明为
const
?@pzaenger是的先生!改变,让它工作!请发布为并回答,我将接受为OK。谢谢,我可以帮你:)非常感谢,回购协议不是我的,是我的。现在问题解决了:)哦,好吧,编写教程是一件复杂的事情,所以有时候过滤器可能会出错,实际上它是一个简洁的箭头函数。我也开始学习NodeJS,所以开始响应堆栈溢出。这是我对NodeJS的第一个回应。