未知的认证策略 JWT(JSON Web Token)

5

我现在已经退休了,有些时间可以学习如何开发一个MEVN应用程序;-) 我现在要保护应用程序中的一些页面,需要使用 jwt 令牌。 我可以记录用户并稍后读取它的令牌:

app.get('/movies', (req,res) => {
    jwtOptions.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');
     console.log(Version + 'JWT token: ' + jwtOptions.jwtFromRequest(req));
    Movie.find({}, 'name description release_year genre', (error, movies) => {
        if(error) { console.log(error);}
        console.log(Version + "Fetched " + movies.length + " movies");
        res.send(movies);
    });
});

我在控制台中获取了用户令牌。很好!这个GET请求尚未受到保护。 为了保护它,我稍微修改了第一行:

app.get('/movies', passport.authenticate('jwt', { session: false }), (req,res) => {
...

现在触发了一个错误。

未知的身份验证策略“jwt”

在各种网站上阅读了数百万个问题和答案后,我对解决我的问题毫无头绪。 非常感谢您提供建议。

谢谢


你是否已经使用passport指示了什么是jwt?你需要像这样的代码 passport.use(new JwtStrategy(options)) https://www.npmjs.com/package/passport-jwt - Yury Tarabanko
不,我刚刚测试了你的建议。 - Yves
JwtStrategy回调(带有有效载荷和完成标志)未被调用;-( - Yves
首先,请确保您添加了 passport.initialize() 中间件。然后再声明 /movies 路由之前检查是否已调用 passport.use。顺便提一下文档 :) http://www.passportjs.org/docs/configure/ - Yury Tarabanko
请参考这个答案: https://dev59.com/UZzha4cB1Zd3GeqPHppf#40670855 - Purvik Rana
1个回答

1

你是否检查过你的 server.js 或 index.js 文件?你需要添加一些初始化器。我曾经遇到过同样的错误,就是因为我漏掉了这些东西。

const passport = require('passport');
// Passport middleware
app.use(passport.initialize());

// Passport Config
require('./config/passport')(passport);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接