J'utilise express-jwt et crée mon jeton via jQuery et l'enregistre dans mon localStorage avec:

$.ajax({
  url: "http://localhost:8080/login",
  type: 'POST',
  data: formData,
  error : function(err) {
    console.log('Error!', err)
  },
  success: function(data) {
    console.log('Success!')
    localStorage.setItem('token', data.id_token);
  }
});

J'ai une route protégée dans mon backend comme:

app.get('/upload',jwt({secret: config.secret}), function(req, res) {
  res.sendFile(path.join(__dirname + '/upload.html'));
});

Comment puis-je envoyer le jeton depuis localStorage avec l'en-tête de la demande?

33
larz 8 mars 2016 à 10:01

3 réponses

Meilleure réponse

Vous pouvez définir les en-têtes dans une requête $ .ajax:

$.ajax({
  url: "http://localhost:8080/login",
  type: 'GET',
  // Fetch the stored token from localStorage and set in the header
  headers: {"Authorization": localStorage.getItem('token')}
});
51
gnerkus 8 mars 2016 à 14:37

J'utilise l'approche ci-dessous pour couvrir l'authentification JWT avec les types d'état de résultat

$.ajax({
  url: "http://localhost:8080/login",
  type: "POST",
  headers: { Authorization: $`Bearer ${localStorage.getItem("token")}` },
  data: formData,
  error: function(err) {
    switch (err.status) {
      case "400":
        // bad request
        break;
      case "401":
        // unauthorized
        break;
      case "403":
        // forbidden
        break;
      default:
        //Something bad happened
        break;
    }
  },
  success: function(data) {
    console.log("Success!");
  }
});
2
ilkerkaran 7 janv. 2020 à 14:45

Si vous utilisez l'authentification JWT, voici comment l'ajouter aux en-têtes de la méthode .ajax ():

headers: {
    Authorization: 'Bearer '+token
}

,

2
yogihosting 11 mars 2020 à 12:02