我正在尝试通过令牌为我的web应用程序设置身份验证。我使用nodejs作为后端,使用jwt-simple模块对令牌进行编码/解码。
我设法创建和处理从服务器到客户端的令牌。但是,我很难处理从客户端到服务器的令牌。
例如,我有一个名为profile的页面,我通过以下方式处理该页面的请求:
app.get('/profile', [bodyParser(), jwtauth], function(req, res) {
res.render('profile.ejs', {
user : req.user // get the user out of session and pass to template
});
});其中jwtauth如下所示:
var jwt = require('jwt-simple');
var User = require('../server/models/user');
module.exports = function(req, res, next) {
var token = (req.user && req.user.access_token) || (req.body && req.body.access_token) || (req.query && req.query.access_token) || req.headers['x-access-token'];
if (!token)
return next('invalid or no token');
try {
var decoded = jwt.decode(token, app.get('jwtTokenSecret'));
if (decoded.exp <= Date.now())
return res.end('Access token has expired', 400);
User.findOne({ _id: decoded.id }, function(err, user) {
req.user = user;
});
return next();
} catch (err) {
return next('couldn\'t decode token');
}
};在客户端,一旦用户以以下方式登录,我就附加了令牌:
$(document).ready(function() {
var token = __token;
if (token) {
$.ajaxSetup({
headers: {
'x-access-token': token
}
});
}
});但是如果我试图在我的浏览器中获取url '/profile‘,在头文件中没有'x-access-token’,并且我得到'invalid or no token‘的消息。
如何在客户端设置令牌,以便将其附加到对服务器的每个请求?
非常感谢
发布于 2014-06-27 21:59:36
当你在你的jwtauth中间件中console.log(req.headers)时,你看到了什么?你是不是不止一次定义了$.ajaxSetup?查看此post
https://stackoverflow.com/questions/24435106
复制相似问题