Node + Express获取用户名(req.user undefined)

时间:2016-03-19 16:04:29

标签: node.js express

我正在尝试向我的网站的一部分添加身份验证,该身份验证仅授予某些用户访问权限:

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,所以我不确定如何处理这个问题。

0 个答案:

没有答案