- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 passport-jwt 身份验证策略对 nodejs api 进行身份验证,但它总是抛出 401 未经授权的错误。我尝试了各种实现,但 passport.authenticate 函数似乎不起作用。
使用以下 Passport 版本:
"Passport ": "^0.4.0",
"Passport -jwt": "^4.0.0",
请看下面我的代码:
尝试了以下选项:
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken()
jwtFromRequest: ExtractJwt.fromHeader('authorization')
jwtFromRequest: ExtractJwt.fromAuthHeaderWithScheme('Bearer')
jwtFromRequest: ExtractJwt.fromAuthHeaderWithScheme('jwt')
但不工作。
尝试查看 passport-jwt 401 Unauthorized以及其他引用链接。
app.js 文件:
const express = require('express');
const bodyParser = require('body-parser');
const passport = require('passport');
const cors = require('cors');
const app = express();
const login = require('./routes/login');
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// app.use(passport.initialize());
app.use('/', login);
app.listen(8000, () => console.log('Server running on http://localhost:8000/'));
route文件夹下的login.js文件:
const express = require('express');
const router = express.Router();
const passport = require('passport');
const passportref = require('./../controllers/passport');
const loginController = require('./../controllers/loginController');
router.post('/putemailregistration',loginController.putEmailregistration);
router.get('/login', passportref.authenticate,loginController.verifyLogin);
module.exports = router;
Passport.js 文件:
const passport = require('passport');
const JWTStrategy = require("passport-jwt").Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const models = require('./../models');
const opts = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: 'incredible',
}
passport.use(new JWTStrategy(opts,async (payload, done) => {
try {
console.log(`inside jwt strategy func`);
const user = models.Userabout.findById({
where: { email: { [Op.eq]: payload.email } },
attributes: ['id', 'email', 'password'],
});
console.log(`value of user: ${user}`);
if (typeof user !== 'undefined' && user !== null) {
return done(null, user);
}
else {
return done(null, false);
}
} catch (err) {
done(err, false);
}
}));
module.exports = {
initialize: () => passport.initialize(),
authenticate: passport.authenticate("jwt", { session: false }),
};
loginController.js 文件:
const { Op } = require('sequelize');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const models = require('./../models');
const saltRounds = 10;
module.exports.putEmailregistration = async (req, res) => {
try {
console.log(`inside put email registration`);
if (req.body.email === null || req.body.password === null) {
res.sendStatus(400).json('no data');
} else {
const emailregister = await models.Userdata.create({
email: req.body.email,
password: bcrypt.hashSync(req.body.password,
bcrypt.genSaltSync(saltRounds)),
});
const tokenid = jwt.sign({
id: emailregister.id,
email: emailregister.email,
}, process.env.JWT_SECRETKEY,
{ expiresIn: 3600 });
res.json({ success: true, token: 'bearer ' + tokenid });
}
} catch (err) {
console.log(`error at put email registration: ${err}`);
}
}
module.exports.verifyLogin = (req, res) => {
console.log(`i managed to get here`);
// console.log(`user: ${req.user}`);
// res.send(req.user.email);
}
最佳答案
经过多次调试,我终于解决了这个问题。希望这可能对某人有所帮助
关于javascript - passport-jwt 总是返回 401 unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55572786/
尝试使用以下命令将我的Docker容器推送到Bluemix: sudo docker push registry.ng.bluemix.net//testproj:latest ...但是它保持这种状
我正在运行最新的 Raspbian 发行版并且刚刚安装了 transmission包。 但是,每当我运行 transmission-remote命令 - 例如,要更改一些基本配置 - 我不断收到相同的
我已经使用 Ruby Gem rest-client 来请求网站的 url。我收到以下错误... RestClient::Unauthorized (401 Unauthorized): app/
安装 kube-dns 插件时出现问题。 我的操作系统是 CentOS Linux release 7.0.1406 (Core) Kernel:Linux master 3.10.0-693.el7
我在 ubunto 16 上安装了 Coturn 服务器 目前我正在检查它 function checkTURNServer(turnConfig, timeout){ return new Pr
我正在尝试使用Azure上部署的Kubernetes 1.9.9在新设置的AKS群集上使用Kubernetes仪表板。 我运行kubectl proxy并打开http://localhost:8001
我想测试来自java的Rest接口(interface)。目的是检查 jpg 图像中是否找到任何人脸。我为此使用的 res 调用是 ../face/v1.0/detect 我将 Ocp-Apim-Su
所以我有自己的解析服务器,运行着heroku。 此云代码功能: Parse.Cloud.define("ReadyUp", function(request, response) {
今天,我开始收到此错误,据我所知,没有任何原因。这不是一个一致的错误。今天突然开始了。它昨天运行完美,并且几个星期都没有任何错误。 文件中只有 file_get_contents()。 一段时间以来,
我试图让用户在 Laravel 8 中查看类别页面 CategoryPolicy.php use App\Models\Category; use App\Models\User; use Illum
我正在尝试从 Nexus 存储库中查看我的代码。 首先,我已经生成了密码 mvn --encrypt-master-password _mypassword_ 这是我的 c:/Users/joanet
我使用的是最新的开源 formsflow.ai v4.0.2。我将整个项目带到了我的个人笔记本电脑上。我遵循了 Docker 完整安装指南。 Docker 运行良好。在 http://localhos
我已根据 ADLS Gen2 容器中存储的 parquet 文件在 Azure Synapse 中创建了一个外部表。我使用以下三个查询来创建数据源、文件格式和表: CREATE EXTERNAL DA
我正在尝试按照示例项目和来自 here 的教程将示例 Power BI 仪表板嵌入到 WPF 应用程序中.当我启动该应用程序时,我必须输入我的密码来验证我自己,当它尝试使用 getAppWorkspa
因此,我正在尝试使用kubernetes(minikube)。我是一个初学者,对docker有一些基本的经验。 事实证明,我2天前安装了kubernetes,却没有做任何事情。 我几乎没有设法连接到仪
所以问题是:我最近做了 this post . 我提到的解决方案适用于一个 token 和一个 API,但当我尝试使用两个 token (gmail 和 Sheets API)处理两个 API 时,它
我正在使用 Java 开发一个包含文本转语音功能的应用程序。我使用了 IBM Watson Text-to Speech API,但我的代码总是出现未经授权的错误。有人能帮我修复它吗?非常感谢! Ia
我正在尝试按照示例项目和来自 here 的教程将示例 Power BI 仪表板嵌入到 WPF 应用程序中.当我启动该应用程序时,我必须输入我的密码来验证我自己,当它尝试使用 getAppWorkspa
我们已将 TFS 2013 服务器升级到 TFS 2015,我们正在设置新的构建代理。 在此之前,我们进行了试运行,并在我们对现有 TFS 数据库进行最终转换之前让一切都运行良好。构建代理工作得很好。
我需要一些有关 Azure Durable Functions 的帮助。 我在 C# 中使用 VS Code 创建了一个新的持久函数,并通过 VS Code azure 函数扩展将其部署到 Azure
我是一名优秀的程序员,十分优秀!