我有以下实施:
前端:localhost:4200(这是Angular应用)
后端:localhost:3000(这是我在Node.js& Express上运行的REST API)
-
第1步。在Angular应用中,用户点击一个链接,将其重定向到我的REST API(localhost:3000 / auth / steam)。
第2步。我的REST API会将他重定向到他登录的OpenID提供商(Steam)。
第3步。成功登录后,OpenID Provider会将用户与用户数据一起重定向回我的后端服务器。我的后端服务器将这些数据保存在数据库中,并创建一个包含用户数据的JWT(JSON Web令牌)。
第4步。将用户与令牌一起重定向到前端......
这是我不知道这样做的优雅方式的部分。我想过将令牌作为URL参数传递(?token = ...),但这有点不安全,因为令牌在URL中可见。
有更好的方法吗?谢谢:))
答案 0 :(得分:0)
我认为最好的方法是将其发送到Http Headers
。
最好的方法是使用HttpClientModule
进行http请求。
此模块还以下一种方式提供Interceptor
功能:
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);
}
}
&#13;