角度如何从authgaurd检索?

时间:2019-11-05 18:03:37

标签: angular post angular-http-interceptors jwt-auth auth-guard

我有一个使用jwt身份验证的Angular-springboot程序,我想知道一旦登录角度,如何恢复登录者的数据,例如用户名。我看了一些有关authgaurd和httpinterceptors的指南,但对rigurado感到有些困惑,请问您能给我寄一个代码来检索数据吗?我从auth-gaurd,身份验证,basic-auth-http-interceptors和httpclient指南中复制了一些服务,我认为这是非常标准的,但是如果需要,我会发布它们

2 个答案:

答案 0 :(得分:0)

当用户登录系统时,将令牌类型和jwt令牌保存在本地存储中。借助TokenInterceptor,它在每个请求中发送标头详细信息。

import { Injectable } from '@angular/core';
import {
  HttpRequest,
  HttpHandler,
  HttpEvent,
  HttpInterceptor, HttpResponse
} from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
  constructor() { }
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    request = request.clone({
      setHeaders: {
        Authorization: `${localStorage.getItem('token_type')} ${localStorage.getItem('jwt_token')}`
      }
    });
    return next.handle(request);
  }
}

在app.module.ts中添加提供者{ provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true }

答案 1 :(得分:0)

谢谢,是的,我有一个这样的拦截器,它保存在本地存储中,但是如果我在另一个组件中,我想调用它,例如,我按下一个按钮,例如,在我想要的方法中,如果您按下此按钮,您必须登录好吗?并且必须更新数据库,因此我需要知道是谁按下了该按钮,如何才能检索到它?