一尘不染

Angular 6.x /设置jsessionid cookie

spring-boot

我使用java和springboot
2.x开发了我的应用程序后端,另一方面,我有我的角度应用程序。我还使用OAuth2协议登录,我需要登录到Cookie后保存Google提供的JSESSION
ID,然后将其在每个请求中发送给后端应用。我读到有关使用HttpInterceptor的信息,但无法解决。有什么帮助吗?谢谢


阅读 553

收藏
2020-05-30

共1个答案

一尘不染

Angular HTTPInterceptor是最合适的解决方案

您可以按照以下步骤使用它:

1: 构建您的HTTPInterceptor (@Injectable服务):

@Injectable()
export class SpringbootInterceptor implements HttpInterceptor {
  constructor(public auth: AuthService) {}
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    // Clone the request to add the new header
    const clonedRequest = req.clone({ headers: req.headers.set('Set-Cookie', 'jsessionid=' + this.auth.getJSessionId()) });

    // Pass control to the next request
    return next.handle(clonedRequest);
  }
}

请注意, .clone() 方法添加了作为参数提供的信息。

2: 将Interceptor设置为您的NgModule提供者

@NgModule({
  bootstrap: [AppComponent],
  imports: [...],
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: SpringbootInterceptor,
      multi: true
    }
  ]
})

现在,来自NgModule的任何请求都可以在 SpringbootInterceptor中 设置标头。

您可以在以下位置查看更多信息:

2020-05-30