Bonjour
je travaille actuellement sur une application Web
Front: angular 8
Back: Spring boot, Java 8 qui expose des WS REST (UserController)
j'ai ajouté un Filter pour autoriser le crossDomain
je rencontre un problème de récupération du token, en fait, tous ce que je mets dans le ckamps "Authorization" du header coté angularn'est pas transmis au backend.

deux situations:
1:
- controller mappé @RequestMapping("/users")
- methode mappée directement à la racine : @RequestMapping(value = "/{idUser}", method = RequestMethod.GET, produces = "application/json")
http://localhost:8080/users/5

==> tous va bien, le champ "Authorization" passé dans le header est récupéré corretement coté backend.

Situation 2:
controller mappé @RequestMapping("/users")
- methode mappée : @RequestMapping(value = "/detail/{idUser}", method = RequestMethod.GET, produces = "application/json")
http://localhost:8080/users/detail/5

==> KO: impossible de récupérer les champs coté Backend.



interceptor
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        // add authorization header with jwt token if available
        let currentContext = this.storageService.currentUserContextValue;
 
        if (currentContext && currentContext.accessToken && currentContext.accessToken.token) {
         //  alert(currentContext.accessToken.token) ;
         console.info(currentContext.accessToken.token) ;
          console.info('body : ' +request.body) ;
            request = request.clone({
                setHeaders: {   Authorization: `${currentContext.accessToken.token}` }
 
            });
         } 
        return next.handle(request);
 
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
 
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		response.setHeader("Access-Control-Allow-Origin", "*");
		response.setHeader("Access-Control-Allow-Credentials", "true");
 	    response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
		response.setHeader("Access-Control-Max-Age", "3600");
		response.setHeader("Access-Control-Allow-Headers", "*");
 
		chain.doFilter(req, res);
	}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
private String extractAuthTokenFromRequest(HttpServletRequest httpRequest) {
		// String authToken = httpRequest.getHeader("X-Access-Token");
		String authToken = httpRequest.getHeader("Authorization");
		if (authToken == null) {
			authToken = httpRequest.getParameter("token");
		}
		return authToken;
	}
merci pour votre aide