【发布时间】:2019-04-30 12:03:17
【问题描述】:
我现在退休了,现在有时间学习如何开发 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);
});
});
我在控制台中获得了用户令牌。美好的!此获取请求尚未受到保护。 为了保护它,我稍微修改了第一行:
app.get('/movies', passport.authenticate('jwt', { session: false }), (req,res) => {
...
现在触发了一个错误。
未知的身份验证策略“jwt”
在阅读了各种网站上的几百万个问题和答案后,我没有任何想法可以解决我的问题。 建议将不胜感激。
谢谢
【问题讨论】:
-
您是否用
jwt指示了护照?你需要passport.use(new JwtStrategy(options))npmjs.com/package/passport-jwt -
没有。我刚刚测试了你的建议。
-
未调用 JwtStrategy 回调(带有有效负载并完成);-(
-
首先,确保您添加了
passport.initialize()中间件。然后在声明/movies路由之前检查你是否调用了passport.use。顺便说一句文档:) passportjs.org/docs/configure