node.js - 护照-jwt sequelize 401 总是
问题描述
当我试图保护用户 API 时;我总是 401 未经授权。我尝试了不同的变体来定义策略;但没有运气。在使用 Secret 和 RS256 算法签署令牌时,我一直在使用 JWTStrategy 和 jwtwebtoken
Passport.js
// import * as module from 'module';
const
User = require('../models/user'),
JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt,
config = require('./appconfig');
// Setting JWT strategy options
const jwtOptions = {
// Telling Passport to check authorization headers for JWT
jwtFromRequest: ExtractJwt.fromAuthHeaderWithScheme('Bearer'),
// Telling Passport where to find the secret
secretOrKey: config.jwtSecret,
algorithms:['RS256']
// TO-DO: Add issuer and audience checks
};
console.log(config.jwtSecret);
module.exports = function(passport) {
passport.use(new JwtStrategy(jwtOptions, function(jwt_payload, done) {
console.log(jwt_payload);
User.findOne({id: jwt_payload.sub}, function(err, user) {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
// or you could create a new account
}
});
}));
};
索引.Route.js
const express = require('express');
const userRoutes = require('./user.route');
const authRoutes = require('./auth.route');
// const postRoutes = require('./post.route');
const passport = require('passport');
passport.initialize();
var jwt = require('../config/passport')(passport);
const router = express.Router(); // eslint-disable-line new-cap
/** GET /health-check - Check service health */
router.get('/health-check', (req, res) =>
res.send('OK')
);
// mount user routes at /users
router.use('/users', passport.authenticate('jwt', { session: false }), userRoutes);
// mount auth routes at /auth
router.use('/auth', authRoutes);
// router.use('/posts', postRoutes);
module.exports = router;
使用邮递员:标头:身份验证:JWT 令牌
本地主机:4040/api/用户
解决方案
您是否在标题部分配置了邮递员?你能显示 JwtStrategy 代码吗?
推荐阅读
- xml - 有没有一种简单的方法可以复制 XML 文档,但更改日期节点的格式?
- python - 如何在bgzf中间写一行或一个块
- javascript - 如何使用javascript更改html元素的图像源
- asp.net-core - 如何使用自定义服务在 ASP.NET Core 3.1 中注册身份验证提供程序?
- sql - Oracle SQL alter table add column with current user name
- python - 两个日期之间的差异并以每小时分钟数显示结果
- php - “无法将图像数据写入路径” - Laravel 图像干预
- python-3.x - 使用 pandas 组合包含 NaN 和 int 值的所有连续行中的行值
- angular - 无法加载 Angular 生产构建 - 由于不允许的 MIME 类型(“text/html”),加载模块被阻止
- node.js - 为nodejs中的任何端点为每个用户运行一次函数