我开发使用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