Dodanie tokena JWT do każdego zapytania.

0

Witam,
Próbuje dodać token JWT do każdego zapytania. Robię to w taki sposób


app.factory('authInterceptorService', ['$q', 'localStorageService', function ( $q, localStorageService ) {

   return {
       request: function (config) {
           config.headers = config.headers || {};
           var userToken = localStorageService.get('auth-user').token;
			
           if(isNotEmpty(userToken))
				config.headers['auth-token'] = userToken;
				
           return config;
       },
      Dalsza część...

Nie mam pojęcia dlaczego to nie chce działać. Próbowałem na wszystkie możliwe sposoby jakie tylko przyszły mi do głowy. W powyższym przykładzie efekt wypisania nagłówków po stronie serwera jest następujący:

  • access-control-request-headers -> auth-token

a powinno być coś w takiego :

  • auth-token -> eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4M2MyMTllNy1jOTE5LTRkMD dalsza część tokenu ....
$http({
				method: 'GET',
				url: serverIp+'/user/cos'
			}).then(function successCallback(response) {
				successAlertOnlyHeader(response.data.login + response.data.password, delay);
			}, function errorCallback(error) {
				if(isNotEmpty(error.data))
					errorAlertOnlyHeader(error.data.stringWrapper, delay);
		});

Przykładowe wysyłanie REST zapytania. Dodam że w Postmanie działa poprawnie.

Z góry dzięki za pomoc.

0
app.config(($httpProvider) => {
  $httpProvider.interceptors.push((localStorageService) => ({
    request: (config) => {
      config.headers = config.headers || {};
      const userToken = localStorageService.get('auth-user').token;

      if (isNotEmpty(userToken)) {
        config.headers['auth-token'] = userToken;
      }

      return config;
    },
  }));
});

Powinno smigac. Uwaga, napisane w es6.

0

Niestety efekt ten sam. Nie rozumiem dlaczego

config.headers['auth-token'] = userToken;
```  
dodaje auth-token jako wartość access-control-request-headers.
Oto cały plik może w innym miejscu jest błąd:

```javascript
'use strict';

var delay = 2000;
var serverIp = 'http://localhost:8089';
var localhostIp = 'http://localhost:8080';

var app = angular.module('app', [
		'LocalStorageModule'
	]);
	
app.factory('authInterceptorService', ['$q', 'localStorageService', function ( $q, localStorageService ) {

    return {
        request: function (config) { //zapytanie
            config.headers = config.headers || {};
            var userToken = localStorageService.get('auth-user').token;

            if(isNotEmpty(userToken))
				config.headers['auth-token'] = userToken;
			
            return config;
        },

        response: function (result) { //odpowiedz
            return result;
        },

        responseError: function (rejection) { //error
            if (rejection.status === -1) {
                console.log(errorConnection, rejection.status, 'status');
                errorAlertOnlyHeader(errorConnection, delay);
            }
            if (rejection.status === 401) {
                console.log(errorUnauthorized, rejection.status, 'status');
                errorAlertOnlyHeader(errorUnauthorized, delay);
            }
            return $q.reject(rejection);
        }
    }
}]);

app.config(['$httpProvider', function ($httpProvider) {
	$httpProvider.interceptors.push('authInterceptorService');
}]);

A po stronie serwera java

```java
import com.global.configuration.auth.data.JwtUser;
import com.global.services.JwtService;
import io.jsonwebtoken.JwtException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

@WebFilter(urlPatterns = { "/user/*"})
public class JwtFilter implements Filter {

    @Autowired
    private JwtService jwtTokenService;

    @Value("${jwt.auth.header}")
    private String authHeader;

    @Override
    public void init(FilterConfig filterConfig) {}

    @Override public void destroy() {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        final HttpServletRequest httpRequest = (HttpServletRequest) request;
        final HttpServletResponse httpResponse = (HttpServletResponse) response;
        final String authHeaderVal = httpRequest.getHeader(authHeader);

        System.out.println("--------------------> TOKEN: " + authHeaderVal);
        showHeaders(httpRequest);

        if (null == authHeaderVal) {
            httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            return;
        }

        try {
            JwtUser jwtUser = jwtTokenService.getUser(authHeaderVal);
            httpRequest.setAttribute("jwtUser", jwtUser);
        } catch(JwtException e) {
            httpResponse.setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
            return;
        }

        chain.doFilter(httpRequest, httpResponse);
    }

    private void showHeaders(HttpServletRequest httpRequest) {
        Enumeration headerNames = httpRequest.getHeaderNames();
        System.out.println("\n");
        while(headerNames.hasMoreElements()) {
            String headerName = (String)headerNames.nextElement();
            System.out.println(headerName + " -> " + httpRequest.getHeader(headerName));
        }
        System.out.print("\n\n");
    }

}
```




```

1 użytkowników online, w tym zalogowanych: 0, gości: 1