Javascript 用next传递响应主体
我对JavaScript非常陌生,所以我仍在努力解决问题。在应用程序中,我们使用Javascript 用next传递响应主体,javascript,express,Javascript,Express,我对JavaScript非常陌生,所以我仍在努力解决问题。在应用程序中,我们使用jwt检查令牌是否有效。为此,使用教程和我自己的一些实验创建了以下函数: 功能已授权(请求、恢复、下一步){ const bearerHeader=req.header['authorization'] if(bearerHeader的类型!=“未定义”){ let token=bearerHeader.split(“”)[1] 让privateKey='secretkey' verify(令牌,私钥,{algori
jwt
检查令牌是否有效。为此,使用教程和我自己的一些实验创建了以下函数:
功能已授权(请求、恢复、下一步){
const bearerHeader=req.header['authorization']
if(bearerHeader的类型!=“未定义”){
let token=bearerHeader.split(“”)[1]
让privateKey='secretkey'
verify(令牌,私钥,{algorithm:“HS256”},(err)=>{
如果(错误){
res.sendStatus(403)
}
否则{
下一个()
}
})
}
否则{
res.sendStatus(403)
}
}
然后,当我使用一些json
负载执行post
调用时,它将在以下函数中正确传递:
app.post('/api/posts',已授权,(请求,回复)=>{
res.json({
消息:“Post created”,
请求:req.body.username
})
})
唯一一件似乎不起作用的事情是如何查阅
post
调用发送的body
中的json
paybload。当然,中间件功能必须经过授权
才能传递此数据。您可以尝试多个选项来实现这一点
方法1:
使用,它保证在请求的生命周期内保持状态。
包含响应局部变量的对象,作用域为请求,因此仅对在该请求/响应周期(如果有)期间呈现的视图可用。否则,此属性与app.locals相同
此属性对于公开请求级信息(如请求路径名、经过身份验证的用户、用户设置等)非常有用
拯救 检索变量的步骤
app.use(function(req, res, next) {
if (res.locals.authenticated) {
console.log(res.locals.user.id);
}
next();
});
方法2:
将变量附加到req对象
req.username = username;
方法1是实现您期望的目标的最推荐的方法
希望这能对你有所帮助:)你好,你能详细说明一下,你被困在哪里了?我想我知道答案,但不确定你要找的是什么。当然,如果我用有效的令牌拨打post电话到路线
/posts
,我可以毫无问题地到达该路线。但是如果post
包含像@{userName:'Bob'}
这样的json主体,我希望在被授权后能够在函数中使用userName
。似乎也很难识别它是哪个用户。因为该信息存储在令牌中。但是我似乎无法检索它。您不能在您的isAuthorized
中间件的req.body中设置任何头,以帮助您检查实际路由处理程序中的确切用户。
req.username = username;