Envoi du token d'authentification jwt avec javascript

Signaler
Messages postés
30
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
3 juin 2021
-
Bonjour, je bloque sur un problème depuis 3 jours. En faite je travaille sur un projet avec angular et Spring boot.
Pour l'authentification je travaille avec jwt (json web token). En envoyant une requete avec fetch api dans javascript, je trouve toujours le code 500 pour la requete post. J'ai constaté que le problème c'est dans la récupération de l'utilisateur connecté qui ne se fait pas parce qu'on testant avec un utilisateur statique ça marche. Ce que je pense c'est qu'il faut envoyer le token d'authentification dans le header. Mais je sais pas comment la faire avec javascript. Merci d'avance pour votre aide.

Voici mon code en javascript:
	  if ('geolocation' in navigator) {
        	  console.log('geolocation available');
            navigator.geolocation.watchPosition(position => {
            lat = position.coords.latitude;
            lon = position.coords.longitude;
            acc = position.coords.accuracy;
  		  pos = console.log(lat, lon);
  		  console.log(acc);
            document.getElementById('latitude').textContent = lat;
            document.getElementById('longitude').textContent = lon;

  		  // Send the data to the spring controller

  		  const data = {"latitude":lat, "longitude": lon};
  		  const options = {
  			method: 'POST',
  			headers: {
  				'Content-Type': 'application/json'
  			},
  			body: JSON.stringify(data)
  		};
  		fetch('http://localhost:8989/geolocalisations/getLocations', options);
          },
          error => console.log(error), {
          	 enableHighAccuracy: true
          	 }
          );
        } else {
          console.log('geolocation not available');
        }




et voici mon code en java dans le back end:

   @PostMapping(value = "/geolocalisations/getLocations")
    public @ResponseBody String addGeolocation(@RequestBody(required = false) Geolocalisation data) {

        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        Patient p = patientRepository.findByUsername(auth.getName());
        data.setPatient(p);

        geolocalisationMetierImpl.addGeolocation(data);        
        return "success";
    }