首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON Web令牌-将令牌附加到请求

JSON Web令牌-将令牌附加到请求
EN

Stack Overflow用户
提问于 2014-06-26 23:54:51
回答 1查看 997关注 0票数 0

我正在尝试通过令牌为我的web应用程序设置身份验证。我使用nodejs作为后端,使用jwt-simple模块对令牌进行编码/解码。

我设法创建和处理从服务器到客户端的令牌。但是,我很难处理从客户端到服务器的令牌。

例如,我有一个名为profile的页面,我通过以下方式处理该页面的请求:

代码语言:javascript
复制
  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如下所示:

代码语言:javascript
复制
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');
  }

};

在客户端,一旦用户以以下方式登录,我就附加了令牌:

代码语言:javascript
复制
$(document).ready(function() {
  var token = __token;

  if (token) {
    $.ajaxSetup({
      headers: {
        'x-access-token': token
      }
    });
  }
});

但是如果我试图在我的浏览器中获取url '/profile‘,在头文件中没有'x-access-token’,并且我得到'invalid or no token‘的消息。

如何在客户端设置令牌,以便将其附加到对服务器的每个请求?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2014-06-27 21:59:36

当你在你的jwtauth中间件中console.log(req.headers)时,你看到了什么?你是不是不止一次定义了$.ajaxSetup?查看此post

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24435106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档