node.js - 是否可以使用 `JwtStrategy` 更改`JWT` 字符串?
问题描述
Node / Ionic
我从网上下载了一个项目,然后...
在授权控制器文件上,我有以下内容:
...
exports.login = function(req, res, next) {
var userInfo = getUserInfo(req.user);
res.status(200).json({
token: 'JWT ' + generateToken(userInfo),
userInfo: userInfo
});
}
...
在其他配置文件上,我有以下内容:
...
passport.use(
new JwtStrategy({
secretOrKey: credentials.secret,
jwtFromRequest: ExtractJwt.fromAuthHeader(),
},
function(payload, done) {
User.findById(
payload._id,
function(err, user) {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
}
}
);
}
)
);
...
在routes
文件上我有以下内容:
...
app.get(
'/api/auth/check',
passport.authenticate('jwt', { session: false }),
function(req, res) {
var user = req.user;
res.send({ content: 'Success', user: user });
}
...
然后,我对此有一个具体问题:
授权控制器文件上的“JWT”是什么?
...
token: 'JWT ' + generateToken(userInfo),
...
如果不是JWT
我想使用ABCDEF
呢?实际上,我尝试了其他不同的字符串:JWT
并且它似乎继续工作,不明白为什么。我去了文档,但不清楚这一点。
解决方案
文档清楚地说明了如何做到这一点:
jwtFromRequest
(必需)接受请求作为唯一参数并将 JWT 作为字符串或 null 返回的函数。有关更多详细信息,请参阅从请求中提取 JWT 。
你正在做的:
new JwtStrategy({
secretOrKey: credentials.secret,
jwtFromRequest: ExtractJwt.fromAuthHeader()
}, ...)
您在这里有两个选择:
编写您自己的提取 JWT 的函数:
function myExtractor(req) { const jwt = req.header('ABCDEF') // ... do work return 'extractedJwtToken from work.' }
使用允许您指定自定义方案的提供的提取器:
new JwtStrategy({ secretOrKey: credentials.secret, jwtFromRequest: ExtractJwt.fromAuthHeaderWithScheme('ABCDEF') }, ...)
推荐阅读
- python-3.x - Python从颜色名称到RGB
- javascript - 如何以一些数字的间隔打开文件
- mysql - codeigniter 数据按年和按作者显示并计数
- c - C for 循环优化
- python - 具有并发功能的python多处理
- node.js - 如何将具有 opencv4nodejs 依赖项的 Node.js 应用程序部署到 Heroku?
- python - 如何避免在定义中使用许多 if 语句?
- javascript - 哪个插件将用于引导程序或 html 和 css,例如 http://www.gwadarrealestate.pk/map/lahore/dha-lahore-rahbar-map.html
- amazon-web-services - 创建 Dynamodb 复合键
- python - 如何在 linux 上的 VSCode 中保存 .py 文件并且只写一次管理员密码?