首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用passport-jwt正确检查令牌负载?

如何使用passport-jwt正确检查令牌负载?
EN

Stack Overflow用户
提问于 2017-08-17 16:55:53
回答 1查看 1.3K关注 0票数 0

我目前正在尝试实现passport-jwt,我有一个使用jwt-simple创建令牌的方法,其中包含用户的密钥。

代码语言:javascript
复制
async createToken(u: string, p: string){
    let user = await this.us.model.findOne({'key': u})
    if (user.key == u){
        let payload = {'key': u}
        let token = jwt.encode(payload, "Banana")
        return token;
    }
}

我手动将其放入邮递员令牌中,并尝试获得这条路线。我正在使用pleerock/routing-controllers @UseBefore在它到达方法之前调用中间件。

代码语言:javascript
复制
@Get("/test")
@UseBefore(passport.authenticate("jwt", { session: false }))
test(@Res() response: Response){
    response.send("Test done.")
}

下面是我如何设置passport-jwt的策略

代码语言:javascript
复制
let OPTJWT = {
    secretOrKey: 'Banana',
    jwtFromRequest: jwt.ExtractJwt.fromAuthHeader()
}
passport.use(new jwt.Strategy(OPTJWT, async ( jwt_payload, done) => {
        console.log(jwt_payload)
        let user = await mongoose.model("users").findOne({'key': jwt_payload.key});
        console.log(user)
        if (user) {
            return done(null, {
                key: jwt_payload.key
            });
        } else {
            console.log("User not found")
            return done(new Error("User not found"), null);
        }
    }
    ));


app.use(passport.initialize())

我放入console.log()来打印passport得到的内容,但是console没有写出任何内容。路由只返回未经授权的(Postman),即使我确定给定的令牌有效负载是用户数据库中的现有密钥。所以我的问题是我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-08-23 19:35:56

问题出在jwt.ExtractJwt.fromAuthHeader()上,由于某种原因,它不能识别授权标头,所以这个jwt.ExtractJwt.fromHeader("authorization")可以正常工作。

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

https://stackoverflow.com/questions/45730671

复制
相关文章

相似问题

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