我正在尝试向我的网站的一部分添加身份验证,该身份验证仅授予某些用户访问权限:
router.get("/file/:myFile", function(req, res, next) {
console.log(req.user) //undefined. Ideally I could just req.user.username and be set.
var dirFile = __dirname + "/file/" + req.params.myFile;
fs.readFile(dirFile, function (err,data){
if(err) {console.log(err);}
res.contentType("application/pdf");
res.send(data);
});
});
我认为问题在于,在我的登录功能中,我只是返回一个json Web令牌,因此所有身份验证和客户端信息都停留在客户端。我的登录功能:
router.post('/login', function(req, res, next){
if(!req.body.username || !req.body.password){
return res.status(400).json({message: 'Please fill out all fields'});
}
passport.authenticate('local', function(err, user, info){
if(err){ return next(err); }
if(user){
return res.json({token: user.generateJWT()});
} else {
return res.status(401).json(info);
}
})(req, res, next);
});
如果我正在进行单页应用程序并且我可以处理请求客户端,这非常有用,但是因为我正在尝试提供PDF,所以我不确定如何处理这个问题。