node.js - 后端的外部 api 处理
问题描述
在我的快速服务器上,我使用自己的令牌查询外部 API。当我登录到我的服务器时,我根据登录的用户向外部 API 请求一个令牌,并将外部 API 的令牌保存在我的快速服务器的令牌中。
每个用户根据他们的 token 从外部 api 获取不同的数据,对于需要外部 API 信息的查询,我读取接收到的 token 并获取外部 API token 以通过带有 axios 的 headers 发送它,例如:
const LoginUser = (request, response) {
axios.post('/ExternalApi/auth',request.body)
.then( data =>{
const payload = {
...
tokenExternalApi: data.token
}
const token = jwt.sign(payload, ...)
return response.status(200).json(token)
})
}
const getData = (req, response){
const tokenFromClient = req.headers.authorization
//Function extract tokenExternalApi from payload Token
const tokenExternalApi = getTokenExternl(tokenFromClient )
axios.get(`/urlExternalApi`, { headers:
{ Authorization: tokenExternalApi }}
).then(res => {
return response.status(200).json(res.data)
})
}
这是管理外部 api 令牌的正确方法还是有更清洁的方法?
解决方案
在我个人看来,这似乎是一种干净的方法。
但请记住,令牌对用户是可见的,所以事实是您的用户可以解码令牌,查看 tokenExternalApi,知道您在后端使用外部 API 并使用该令牌直接调用 ExternalApi,前提是他们有它的诀窍。如果您了解这一事实并且对此感到满意,那么这将起作用。
否则,您可以考虑在将令牌发送给用户之前对其进行编码或将其存储在服务器端会话中。