Javascript passport jwt是否比“a”有任何安全优势;标准;JWT认证?

Javascript passport jwt是否比“a”有任何安全优势;标准;JWT认证?,javascript,express,jwt,passport.js,passport-jwt,Javascript,Express,Jwt,Passport.js,Passport Jwt,我一直在为我们基于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){

我一直在为我们基于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 auth,并鼓励我们使用他们的Passport实现


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

我不熟悉API,但您的服务器是否使用其私钥验证客户端发送的jwt(this.getSecretKey()返回什么)?如果是这样的话,它提供了什么保证?是的,我使用的是一个秘密密钥,当然前端不可用。你所说的“它提供了什么保证”是什么意思?问题是使用JWT本身并不安全,这取决于你如何使用它。它只是一种传递签名或加密令牌的方法。令牌可以由服务器或客户端创建,并使用对称或公钥/私钥算法进行签名和/或加密。代码中不清楚是谁创建了令牌,也不清楚使用了哪种算法。令牌是由jsonwebtoken npm模块创建的。