jwt令牌返回null

时间:2020-10-07 11:32:46

标签: javascript node.js jwt jwt-auth

我尝试通过令牌获取用户ID, 令牌由标头Authorization传递, 当我使用ExtractJwt.fromAuthHeaderWithScheme(“ jwt”)(req) 我取回令牌为空

将令牌传递到标头。

const token = localStorage.getItem("id_token");

export const insertMovie = (payload) => {
  return api.post(`/movie`, payload, {
    headers: { "Authorization": `${token}` },
  });
};

在这里我尝试验证令牌

var User = require("../models/user-model");
var Movie = require("../models/movie-model");
var bcrypt = require("bcrypt");
var jsonwt = require("jsonwebtoken");
var key = require("../db/myUrl");
var ExtractJwt = require("passport-jwt");



 createMovie = async (req, res) => {
  const movieDetails = req.body.movie;
  const token = ExtractJwt.ExtractJwt.fromAuthHeaderWithScheme("jwt")(req);
  const decoded = jsonwt.verify(token, key.secret);
  const userId = decoded.userId;
  console.log(decoded);
}

2 个答案:

答案 0 :(得分:1)

当您尝试

ExtractJwt.fromAuthHeaderWithScheme("jwt")

您需要像这样将令牌添加到标头中:

headers: { "Authorization": `jwt ${token}` },

来自docs

fromAuthHeaderWithScheme(auth_scheme)创建一个新的提取器,该提取器在授权标头中查找JWT,期望该方案与auth_scheme匹配。

答案 1 :(得分:0)

您已将ExtractJwt加倍,而且还需要声明需要附加到令牌的方案“ jwt” 标头:{ Authorization: `jwt ${token}` }

否则将fromAuthHeaderWithScheme更改为仅fromAuthHeader更改为fromHeader(‘Authorization')

我也不知道您是否可以在这样的端点内直接使用通行证-我一直认为通行证需要用作中间件。