是否可以使用 `JwtStrategy` 更改 `JWT` 字符串?
is it possible to change the `JWT` string with `JwtStrategy`?
我从网上下载了一个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),
...
如果我想使用 ABCDEF
而不是 JWT
呢?实际上,我尝试了不同于 JWT
的其他字符串,它似乎一直有效,不明白为什么。我去了documentation但是不清楚这个
文档清楚地说明了如何做到这一点:
jwtFromRequest
(必需)接受请求作为唯一参数的函数,returns JWT 作为字符串或 null。有关详细信息,请参阅请求中的 Extracting the 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')
}, ...)
我从网上下载了一个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),
...
如果我想使用 ABCDEF
而不是 JWT
呢?实际上,我尝试了不同于 JWT
的其他字符串,它似乎一直有效,不明白为什么。我去了documentation但是不清楚这个
文档清楚地说明了如何做到这一点:
jwtFromRequest
(必需)接受请求作为唯一参数的函数,returns JWT 作为字符串或 null。有关详细信息,请参阅请求中的 Extracting the 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') }, ...)