角6.x中/设置JSESSIONID的cookie(Angular 6.x / Set jsessi

2019-10-30 08:54发布

我开发使用Java和springboot 2.X我的应用程序的后端,而在另一方面,我有我的角度应用程序。 我也用的OAuth2协议来登录,我需要的是拯救JSESSION ID谷歌提供了一个cookie登录所以后来在每一个请求传递给后台应用程序发送之后。 我读了有关使用HttpInterceptor但我不能工作了。 任何帮助吗? 谢谢

Answer 1:

角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()方法添加为PARAMS提供信息。

2: 设置拦截到您的NgModule提供商

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

现在,从您的NgModule任何要求,在SpringbootInterceptor设置头。

您可以检查在详细信息:

  • https://angular.io/api/common/http/HttpInterceptor
  • https://angular.io/api/http/Headers


文章来源: Angular 6.x / Set jsessionid cookie