AWSognito refre sh проблема с токеном в Nebular с Angular - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема с моим обновлением токена JWT sh, мне нужно обновить токен sh, если срок его действия истек без входа в систему, я видел внутри NbAuthService метод под названием refreshToken . Я не понимаю, как его использовать, я добавил этот код в свой перехватчик. Вот мой код В этом коде он не подписывается на refreshToken

@Injectable()
export class AuthJWTInterceptor implements HttpInterceptor {
  constructor(private injector: Injector, private router: Router) {}

  intercept(
    req: HttpRequest<any>,
    next: HttpHandler,
  ): Observable<HttpEvent<any>> {
    return this.authService.getToken().switchMap((token: NbAuthJWTToken) => {
      if (!token.isValid()) {
         this.authService.refreshToken('email').subscribe((newToken: any) => {
          console.log((newToken));
        });
        this.router.navigate(['auth']);
      }
      if (token) {
        const JWT = `${token.getValue()}`;
        req = req.clone({
          setHeaders: {
            Authorization: JWT,
          },
        });
      }
      return next.handle(req);
    });
  }

  protected get authService(): NbAuthService {
    return this.injector.get(NbAuthService);
  }
}

Вот мой код конфигурации

NbOAuth2AuthStrategy.setup({
            name: 'email',
            clientId: environment.cognitoClientId,
            clientSecret: '',
            clientAuthMethod: NbOAuth2ClientAuthMethod.NONE,
            redirect: {
              success: '',
              failure: '',
            },
            defaultErrors: ['Something went wrong, please try again.'],
            defaultMessages: ['You have been successfully authenticated.'],
            authorize: {
              endpoint: environment.cognitoUrl + '/oauth2/authorize',
              redirectUri: environment.siteUrl + '/auth/callback',
              responseType: NbOAuth2ResponseType.TOKEN,
            },
            token: {
              endpoint: environment.cognitoUrl + '/oauth2/token',
              grantType: NbOAuth2GrantType.AUTHORIZATION_CODE,
              requireValidToken: false,
              class: NbAuthCognitoToken,
            },
            refresh: {
              endpoint: environment.cognitoUrl + '/oauth2/token',
              grantType: NbOAuth2GrantType.REFRESH_TOKEN,
             },
          }),
        ],
      }).providers,

Итак, в чем ошибка, которую я сделал здесь, пожалуйста, помогите мне разрешите это.

...