Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在节点api中从get请求中解码JWT令牌_Javascript_Node.js_Typescript_Jwt - Fatal编程技术网

Javascript 如何在节点api中从get请求中解码JWT令牌

Javascript 如何在节点api中从get请求中解码JWT令牌,javascript,node.js,typescript,jwt,Javascript,Node.js,Typescript,Jwt,我正在发送JWT令牌以获得授权请求,但是我似乎无法每次都对令牌进行解码。它可以使用一种方法,但不能使用另一种方法。第一个代码段给出了服务器端的“解码”令牌结果,而第二个代码段则没有 公共异步getAllUsers(请求:请求,响应:响应){ 试一试{ const payload=req[“decoded”];//给出已解码的令牌 if(有效载荷){ 让用户:ILoginResult=await UserData.getAllUsers(有效负载); res.status(users.status

我正在发送JWT令牌以获得授权请求,但是我似乎无法每次都对令牌进行解码。它可以使用一种方法,但不能使用另一种方法。第一个代码段给出了服务器端的“解码”令牌结果,而第二个代码段则没有

公共异步getAllUsers(请求:请求,响应:响应){
试一试{
const payload=req[“decoded”];//给出已解码的令牌
if(有效载荷){
让用户:ILoginResult=await UserData.getAllUsers(有效负载);
res.status(users.status)、send(users.result);
}
}捕获(e){
res.status(500).send({错误:e.toString()});
}
}
公共异步getAccountDetails(请求、响应){ 试一试{ const user=req[“decoded”];//始终未定义 let details:IDetails=await AccountData.getAccountDetails(name); 资源状态(200)。发送(详细信息); }捕获(e){ 设err=e.toString(); res.status(500).send({error:err}); } } 邮递员的请求包括一个
承载令牌
,该令牌在登录时提供,并在应用程序的其他部分使用。不知道为什么它在一个中有效,但在另一个中无效。如果有人能更好地解释这里发生的事情和/或提供提示、建议和建议,我将不胜感激

编辑-添加请求详细信息

获取请求到:
http://localhost:5000/api/v1/account
带有标记:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyj1c2vyijoywrtaw4ilcjpyxqioje1nzc5otuwmjusimv4cci6mtu2nzgynswijanjijaahr0cdovl2xvy2fsag9zdj9.-msLba1VPs4Nv b9yl6fk2dfhkqgivjfpt\UnDk


decoded
属性用于我所遵循的教程中,该教程似乎是从服务器端添加的,但解释得很差,我还没有找到一个好的替代/解释。我认为它也没有任何中间件。非常欢迎alt方法。

感谢评论中的建议,我能够在创建此处使用的
解码
属性的路线中找到缺失的部分。通过将中间件添加到路由器,请求按预期工作:

从“express”导入express;
从“./controllers/UserController”导入用户控制器;
从“./utils/ValidateToken”导入有效数据;
导出默认值(路由器:express.router)=>{
路由器
.route(“/用户”)
.post(UserController.addUser)
.get(valid.validateToken、UserController.getAllUsers);
router.route(“/login”).post(UserController.loginUser);
router.route(“/account”).get(valid.validateToken,UserController.getAccountDetails);
};

缺少
valid.validateToken
,该位是从正在传递的JWT生成解码对象的位。故事的寓意是,每件事都要仔细检查。感谢所有评论/回答的人

在请求处理程序中获取AccountDetails之前,您是否使用了中间件?我在考虑如何在请求对象中设置属性“decoded”?…@ranieribt我错了,路由上完全有一个中间件在工作,这似乎是问题所在,因为它创建了decoded属性。谢谢你在学习哪个教程?@SuleymanSah我相信来自Scotch.IO的Vue和Node one的auth,尽管我从多个教程中进行了选择,因为我无法在一个教程中找到我想要的所有内容。那么你的问题解决了吗?