如何从节点 api 中的获取请求中解码 JWT 令牌
Posted
技术标签:
【中文标题】如何从节点 api 中的获取请求中解码 JWT 令牌【英文标题】:How to get JWT token decoded from get request in node api 【发布时间】:2020-04-22 02:59:01 【问题描述】:我正在跨授权请求发送 JWT 令牌,但是我似乎每次都无法获取令牌解码。它适用于一种方法,但不适用于另一种方法。第一个 sn-p 从服务器端给出一个“解码”的令牌结果,但第二个没有。
public async getAllUsers(req: Request, res: Response)
try
const payload = req["decoded"]; // gives the token decoded
if (payload)
let users: ILoginResult = await UserData.getAllUsers(payload);
res.status(users.status).send(users.result);
catch (e)
res.status(500).send( error: e.toString() );
public async getAccountDetails(req: Request, res: Response)
try
const user = req["decoded"]; // always undefined
let details: IDetails = await AccountData.getAccountDetails(name);
res.status(200).send(details);
catch (e)
let err = e.toString();
res.status(500).send( error: err );
邮递员的请求包含一个bearer token
,它在登录时提供并在应用程序的其他部分使用。不知道为什么它适用于一个而不是另一个。如果有人能更好地解释这里发生的事情和/或提供提示、建议和建议,我将不胜感激。
编辑 - 添加请求详细信息
获取请求至:http://localhost:5000/api/v1/account
带有令牌:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYWRtaW4iLCJpYXQiOjE1Nzc5OTUwMjUsImV4cCI6MTU3ODE2NzgyNSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdCJ9.--msLba1VPs4Nv_B9YL6fk2DFHkQCgiVvDJFPt_UnDk
decoded
属性用于我正在遵循的教程中,该教程似乎是从服务器端添加的,但解释得不好,我还没有找到好的替代/解释。我认为它也没有任何中间件。对 alt 方法非常开放。
【问题讨论】:
您在请求处理程序中的 getAccountDetails 之前是否使用了中间件?我正在考虑如何在请求对象中设置“解码”属性?... @ranieribt 我错了,完全有一个中间件在路由上工作,这似乎是问题,因为它创建了解码的属性。谢谢! 你在学习哪个教程? @SuleymanSah 我相信来自 Scotch.IO 的 Vue 和 Node one 的身份验证,尽管我从多个中挑选,因为我无法在一个中找到我想要的一切。 那么您的问题解决了吗? 【参考方案1】:感谢 cmets 的建议,我能够在创建此处使用的 decoded
属性的路径中找到缺失的部分。通过将中间件添加到路由器,请求按预期工作:
import express from "express";
import UserController from "../controllers/UserController";
import valid from "../utils/ValidateToken";
export default (router: express.Router) =>
router
.route("/users")
.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 生成解码对象的位。故事的道德,总是仔细检查一切。感谢所有评论/回答的人!
【讨论】:
以上是关于如何从节点 api 中的获取请求中解码 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章
从Xamarin Forms请求Web API中的JWT时获取错误请求
如何从.Net Core API 中的身份验证 JWT 令牌中获取身份用户?