首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs中的passport-jwt总是返回unauthorized

nodejs中的passport-jwt总是返回unauthorized
EN

Stack Overflow用户
提问于 2016-09-03 01:06:53
回答 2查看 1.2K关注 0票数 1

以下是带有演示凭据的示例代码:

代码语言:javascript
复制
var express=require('express');
var app=express();
var bodyparser=require('body-parser');
var passport=require('passport');
var morgan=require('morgan');
var jwt=require('jwt-simple');

app.use(bodyparser.urlencoded({extended:false}));
app.use(bodyparser.json());
app.use(morgan('dev'));

app.use(passport.initialize());

app.get('/',function(req,res){
    res.send({'status':'success'});
});

var jwtStrategy=require('passport-jwt').Strategy;
var ExtractJwt = require('passport-jwt').ExtractJwt;

var opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
opts.secretOrKey = 'admin686d86';
opts.issuer = "localhost";
opts.audience = "localhost";

passport.use(new jwtStrategy(opts,function(jwt_payload, done){
    console.log("In JWT Strategy");
    console.log(jwt_payload);
    return done(null,{id:203});
}));

app.get('/login',function(req,res){
    var token=jwt.encode({id:203},opts.secretOrKey);
    res.send({success:true,token:token});
});

app.get('/dashboard',passport.authenticate('jwt', { session: false}),function(req,res){
    console.log(req.headers);
    console.log(jwt.decode(req.headers.authorization,opts.secretOrKey));
    res.send({status:'success'});
});

app.listen(5000);

当我尝试登录时,我成功地获得了一个令牌,但当我使用该令牌并粘贴在标题中时,我得到了未经授权的结果。它甚至不会在控制台中打印"In JWT Strategy“。但是当我删除passport.authenticate('jwt', { session: false})时,它会打印数据。我知道有一些愚蠢的错误,但不知道在哪里。我是一个全新的node.js新手,因此任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2016-09-03 14:54:57

令牌创建过程中忘记添加受众和颁发者:

代码语言:javascript
复制
app.get('/login', function(req, res){
    var token = jwt.encode({
        id: 203,
        aud: 'localhost',
        iss: 'localhost'
    }, opts.secretOrKey);

    res.send({ success: true, token: token });
});
票数 1
EN

Stack Overflow用户

发布于 2017-09-20 03:46:50

尝试使用extractJwt.fromAuthHeaderWithScheme('jwt')而不是ExtractJwt.fromAuthHeader()。这应该会有魔力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39297565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档