从 NodeJS 中的任何位置获取当前用户

Dud*_*y67 5 node.js express jwt

我想知道从代码中的任何位置(控制器、模型...)获取当前登录用户的最佳方法是什么。到目前为止,我发现最好的方法是在用于身份验证的中间件中设置用户数据:

const requireAuth = (req, res, next) => {
    const token = req.cookies.jwt;

    // Check if a jwt token does exist and is verified.
    if (token) {
        jwt.verify(token, config.token_secret, async (err, decodedToken) => {
            if (err) {
                res.locals.user = null;
                res.redirect('/login');
            }
            else {
                let user = await User.findById(decodedToken.id);
                // Inject the current user data into the view.
                res.locals.currentUser = user;
                // To get the current user from anywhere .
                req.currentUser = user;
                next();
            }
        });
    }
    else {
        res.locals.user = null;
        res.redirect('/login');
    }
}; 
Run Code Online (Sandbox Code Playgroud)

这是一个好的做法还是有其他方法可以做到这一点?