Node.js 节点+;快速获取用户名(req.user未定义)

Node.js 节点+;快速获取用户名(req.user未定义),node.js,express,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;

我正在尝试将身份验证添加到我的站点的某个部分,该部分将仅向此处的某些用户授予访问权限:

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

如果您使用的是JWT,难道您不能用JWT进行查询并检查它在express上是否有效吗?但是令牌不是存储在客户端上吗?如何检查?我不太确定,将令牌作为查询字符串发送可能不是一个好主意。您能否将JWT设置为cookie,然后检查cookie并验证请求中的令牌?