在我的有角度的应用程序中,我正在使用Http拦截器在每个请求中附加JWT。我还需要从响应标头中读取一些自定义数据,这些数据是在res.headers.get(“ authority”)代码的帮助下读取的。在将请求发送到服务器时,我已打开{observe:'response'},以便我也可以获取标头信息。
我只需要从拦截器返回响应主体到服务/组件,下面是拦截器示例代码片段:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
//debugger
return next.handle(req).map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
//return event.body;
if (!localStorage.getItem("LoggedInUserRole"))
this.authenticationService.setLoggedInUserRole(event.headers.get("authority"));
return event;
//debugger
}
});
}
答案 0 :(得分:0)
您的方法是错误的。您无需在每个请求中都附加JWT。
如果在成功登录的后端登录路径上,服务器以“ Set-Cookie”标头响应,它将在所有后续请求中自动设置JWT标头,则客户端无需设置Cookie。
>例如
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
要在用户向服务器发出注销请求时将其删除,服务器应以以下方式响应:
Set-Cookie: <cookie-name>=''; HttpOnly
这还具有将其设置为仅http的好处,从而提高了安全性。
请参见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie