将令牌传递给我的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
。 这个模块也提供了下面的Interceptor
function:
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); } }