我尝试通过令牌获取用户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);
}
答案 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')
我也不知道您是否可以在这样的端点内直接使用通行证-我一直认为通行证需要用作中间件。