Les*_*aul 2 javascript node.js express satellizer passport.js
我正在尝试向客户端发送Passport-Local登录请求以供Satellizer分析,我希望服务器端的请求发送授权令牌.不幸的是,没有钥匙authorization在request.headers:
{ host: 'localhost:3000',
connection: 'keep-alive',
'cache-control': 'max-age=0',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' }
Run Code Online (Sandbox Code Playgroud)
登录功能在这里重定向,这ensureAuthenticated()就是调用的地方.
app.get('/main', ensureAuthenticated, function(req, res, next){
res.render('main.ejs', { token: createSendToken(req.user, config.secret), id: req.user._id, username: req.user.username, authorization: req.user.authorization });
});
Run Code Online (Sandbox Code Playgroud)
ensureAuthenticated() 然后分析登录请求并确保令牌匹配:
function ensureAuthenticated(req, res, next) {
if (!req.headers.authorization) {
return res.status(401).send({ message: 'Please make sure your request has an Authorization header' });
}
var token = req.headers.authorization.split(' ')[1];
var payload = null;
try {
payload = jwt.decode(token, config.token_secret);
}
catch (err) {
return res.status(401).send({ message: err.message });
}
if (payload.exp <= moment().unix()) {
return res.status(401).send({ message: 'Token has expired' });
}
req.user = payload.sub;
next();
}
Run Code Online (Sandbox Code Playgroud)
然后它重定向并显示消息
{ message: 'Please make sure your request has an Authorization header' }
Run Code Online (Sandbox Code Playgroud)
如何设置request.headers的授权密钥?
要在请求中设置新的标头字段,只需直接访问它,因为标头对象看起来像普通的哈希表.
request.headers.authorization = value;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13081 次 |
| 最近记录: |