Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从本地存储中保存并获取express.js令牌_Node.js_Express_Local Storage_Token_Jwt - Fatal编程技术网

Node.js 从本地存储中保存并获取express.js令牌

Node.js 从本地存储中保存并获取express.js令牌,node.js,express,local-storage,token,jwt,Node.js,Express,Local Storage,Token,Jwt,我正在使用带有Express.js的Node,并尝试在用户登录后使用JWT进行身份验证,生成一个令牌,并将其保存到localstorage,但我不知道如何获取用于身份验证的令牌。 这是我正在使用的代码: 登录视图: $.ajax({ type: 'POST', url: base_url + "login", data: postData, dataType: 'json',

我正在使用带有Express.js的Node,并尝试在用户登录后使用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(token)中,我得到了一个未定义的变量,似乎我不知道如何从路由访问token

非常感谢。

必须将“x-access-token”注册为允许的标头

response.setHeader("Access-Control-Allow-Headers", "x-access-token, mytoken");
查看此帖子:

您是否(通过浏览器的开发工具)验证了标头是否确实已发送?@mscdex当我进入网络时,我无法将x-access-token视为请求标头或响应标头。您在调用
$.ajax
时未正确设置标头。查看本文以了解如何设置标题-在传递给
ajax
函数的对象中,而不是在success函数中,需要一个
headers
字段。