从本地存储中保存并获取快速js令牌

时间:2015-08-27 11:45:19

标签: node.js express local-storage token jwt

我使用Node与Express.js并尝试使用JWT进行身份验证,在用户登录后生成一个令牌,并将其保存到localstorage,但后来我不知道如何获取身份验证令牌。 这是我使用的代码:

登录视图:

$.ajax({
            type: 'POST',
            url: base_url + "login",
            data: postData,
            dataType: 'json',
            success: function(data){
                // console.log(data1);
                // alert(data);
                _(data);
                if(data.success === false){
                    showError(data.msg);
                }else{
                    showError(data.msg);
                    window.localStorage.setItem("authToken", data.token);

                    var token = window.localStorage.getItem('authToken');
                    if (token) {
                      $.ajaxSetup({
                        headers: {
                          'x-access-token': token
                        }
                      });
                    }
                }
            }
        });

这是我在使用任何路径之前检查的路由认证:

router.use(function(req, res, next){
    var token = req.headers['x-access-token'];
    console.log(token);
    if (token) {
        // verifies secret and checks exp
        jwt.verify(token, app.get('superSecret'), function(err, decoded) {      
            if (err) {
                return res.json({ success: false, message: 'Failed to authenticate token.' });    
            }else{
                // if everything is good, save to request for use in other routes
                req.decoded = decoded;    
                next();
            }
        });

      } else {

        // if there is no token
        // return an error
        return res.status(403).send({ 
            success: false, 
            message: 'No token provided.' 
        });
      }
});
在console.log(令牌)中的

我得到一个未定义的变量,似乎我不知道如何从路由访问令牌。非常感谢。

1 个答案:

答案 0 :(得分:0)

" X存取令牌"必须注册为允许标题

response.setHeader("Access-Control-Allow-Headers", "x-access-token, mytoken");

查看此帖子: How do CORS and Access-Control-Allow-Headers work?