将令牌传递给我的Angular 4应用程序的优雅方式是什么?

我有以下实现:

前端 :localhost:4200(这是Angular应用程序)

后端 :localhost:3000(这是我的REST API在Node.js&Express上运行)

步骤1.在Angular应用程序中,用户点击一个链接,将其redirect到我的REST API(localhost:3000 / auth / steam)。

第2步。我的REST API将他redirect到他login的OpenID Provider(Steam)。

第3步。成功login后,OpenID Provider将用户redirect到用户数据和我的后端服务器。 我的后端服务器将这些数据保存在数据库中,并创build一个包含用户数据的JWT(JSON Web令牌)。

第4步。将用户与令牌一起redirect到前端…

这是我不知道什么是一个优雅的方式来做到这一点的部分。 我想传递的标记作为URL参数(?标记= …),但这将是有点不安全,因为该标记将在URL中可见。

有没有更好的方法呢? 谢谢 :)

我认为最好的办法是将它发送到Http Headers 。 最好的方法是使用http请求的HttpClientModule 。 这个模块也提供了下面的Interceptorfunction:

 providers: [ ... { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true } ] export class AuthInterceptor implements HttpInterceptor { constructor(private authService: AuthService) {} intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { const copy = req.clone({headers: req.headers.set('Authorization', this.authService.getToken())}); return next.handle(copy); } }