user3334406
user3334406

Reputation: 337

Save and get express.js token from local storage

I am using Node with Express.js and trying to make an authentication with JWT, after the user logs in generate a token, and save it to localstorage, but then I don't know how to get the token for authentication. This is the code I am using:

Login view:

$.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
                        }
                      });
                    }
                }
            }
        });

And this is the route authentication I am using to check before any of the routes is accessed:

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.' 
        });
      }
});

In console.log(token) I get an Undefined variable , it seems like I don't know how to access the token from route.

Thanks a lot.

Upvotes: 11

Views: 6775

Answers (1)

user5283851
user5283851

Reputation:

"x-access-token" must be registered as an allowed header

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

Check this post : How do CORS and Access-Control-Allow-Headers work?

Upvotes: 1

Related Questions