1

我默默地为我们基于 Express 的 RESTful API 构建了一些登录和身份验证功能。身份验证中间件如下所示:

const Login = require('../services/UserLogin');
//Include this function in any route, to make it available for logged-in users only.
module.exports = async function requireAuth (req,res,next){
    const token = req.headers.token;
    if(!token){         
        return res.status(403).end();
    }
    const userObject = await Login.verifyLogin(token);
    if(userObject){     
        res.locals.id = userObject.id;//Append the user id, to be used during the request.
        res.locals.userObject = userObject;
        return next();
    }else{      
        res.sendStatus(403)
    }
}

Login.verifyLogin 函数使用这个,来自不同的模块:

static verifyToken(token) {
        return new Promise((resolve, reject) => {
            jwt.verify(token, this.getSecretKey(), function (err, decoded) {
                if (err) {
                    resolve(false);
                } else {
                    resolve(decoded);
                }
            });
        })
    }

很简单。问题是,与 passport-jwt 相比,此类功能是否会带来任何“安全风险”。我的意思是,通过观看有关此模块的教程,我所看到的基本上是相同的想法,只是更灵活和可配置。

我还要注意,例如,在 Laravel 中,他们“强烈建议”不要使用他们内置的基于令牌的 API 身份验证,并鼓励我们使用他们的 Passport 实现。

除了花哨的选项之外,有人能告诉我使用 passport-jwt 的真正优势是什么吗?

4

0 回答 0