【问题标题】:Express, Passport and JSON Web Token (jwt) AuthenticationExpress、Passport 和 JSON Web 令牌 (jwt) 身份验证
【发布时间】:2018-05-07 07:14:18
【问题描述】:

app.get("/secret", passport.authenticate('jwt', { session: false }), function(req, res){ res.json({message: "成功!没有令牌你看不到这个"}); });

我将签入邮递员,但未授权回复 Key:授权值:JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNTExNDMxNjcwfQ.wwt4sY8LDXg_UDqD9-uImdYe0dv-6Ya2IF8WA_Y57Qs

【问题讨论】:

  • 您的 passport.js 文件是什么样的?
  • 请查看我的完整代码以获取以下评论。

标签: node.js express vue.js passport.js passport-local


【解决方案1】:

var _ = require("lodash");

var express = require("express");

var bodyParser = require("body-parser");

var jwt = require('jsonwebtoken');

var 护照 = 要求(“护照”);

var passportJWT = require("passport-jwt");

var ExtractJwt = passportJWT.ExtractJwt;

var JwtStrategy = passportJWT.Strategy;

var jwtOptions = {}

jwtOptions.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();

jwtOptions.secretOrKey = 'tasmanianDevil';

var strategy = new JwtStrategy(jwtOptions, function(jwt_payload, next) {

console.log('payload received', jwt_payload);

// usually this would be a database call:

var user = users[_.findIndex(users, {id: jwt_payload.id})];

if (user) {
    next(null, user);
} else {
    next(null, false);
}

});

passport.use(策略);

var app = express();

app.use(passport.initialize());

app.use(bodyParser.urlencoded({ 扩展:真 }));

app.use(bodyParser.json())

app.get("/secret", passport.authenticate('jwt', { session: false }),

函数(req, res){

res.json({message: "Success! You can not see this without a token"});

});

【讨论】:

  • 您确定您在 jwt_payload 中的 id 进入 jwt_payload.id 而不是 jwt_payload._doc.id 吗??
猜你喜欢
  • 2019-01-22
  • 2018-07-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 2016-01-02
  • 2019-03-28
  • 2016-12-10
相关资源
最近更新 更多