具有 JWT Logout 路由的节点,我需要在注销路由的 body 上传递什么?
Node with JWT Logout route, what do I need to pass on the body of the logout route?
我正在使用这个示例:https://github.com/jkasun/stack-abuse-express-jwt 和 Postman 并且所有路由都工作正常,减去 /logout
我正在用令牌传递承载令牌,就像我对 books.js Get 和 Post /books 路由所做的那样,但我收到错误:
"ReferenceError: t is not defined"
我想我需要在 body 上传递一些东西,但我不知道是什么
路线:
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);
此外,要为 refreshTokens
分配一个新值,它不能声明为 const
。您可能需要使用 let
.
这方面的问题很少。让我们来解决它。可能 post 会很长,所有错误都一一突出显示以帮助您理解它。首先你要明白accessTokens 和refreshTokens 的两个区别,让我在最后讨论。前几项更正。
在您的 github 文件行 #22
中定义以下内容
const refreshTokens = [];
但它应该是 var 或 let 而不是 const,因为您将在其中添加更多值。常数用于不改变。另一件事你忘记了 accessTokens 在这里添加。所以现在修改如下
var refreshTokens = [];
var accessTokens = [];
在第 35 行,您正在创建访问令牌,因此也可以通过在 refereshTokens 行下方的 38 之后添加以下内容来将其添加到此数组中
accessTokens.push(accessToken)
很好,你已经保存了两个令牌,现在当你想注销时根据你的编码,你似乎想删除刷新令牌,正如@pzaenger 建议的那样。
refreshTokens = refreshTokens.filter((t) => t !== token)
这将删除您的 refreshToken,但您的 accessToken 仍然有效,功能不多,所以不确定。您还需要在 Headers 中添加您的令牌作为授权,而不是在 Body.
中
我正在使用这个示例:https://github.com/jkasun/stack-abuse-express-jwt 和 Postman 并且所有路由都工作正常,减去 /logout
我正在用令牌传递承载令牌,就像我对 books.js Get 和 Post /books 路由所做的那样,但我收到错误:
"ReferenceError: t is not defined"
我想我需要在 body 上传递一些东西,但我不知道是什么
路线:
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);
此外,要为 refreshTokens
分配一个新值,它不能声明为 const
。您可能需要使用 let
.
这方面的问题很少。让我们来解决它。可能 post 会很长,所有错误都一一突出显示以帮助您理解它。首先你要明白accessTokens 和refreshTokens 的两个区别,让我在最后讨论。前几项更正。
在您的 github 文件行 #22
中定义以下内容
const refreshTokens = [];
但它应该是 var 或 let 而不是 const,因为您将在其中添加更多值。常数用于不改变。另一件事你忘记了 accessTokens 在这里添加。所以现在修改如下
var refreshTokens = [];
var accessTokens = [];
在第 35 行,您正在创建访问令牌,因此也可以通过在 refereshTokens 行下方的 38 之后添加以下内容来将其添加到此数组中
accessTokens.push(accessToken)
很好,你已经保存了两个令牌,现在当你想注销时根据你的编码,你似乎想删除刷新令牌,正如@pzaenger 建议的那样。
refreshTokens = refreshTokens.filter((t) => t !== token)
这将删除您的 refreshToken,但您的 accessToken 仍然有效,功能不多,所以不确定。您还需要在 Headers 中添加您的令牌作为授权,而不是在 Body.
中