在 Angular 6 中阅读 JESSIONID cookie



我正在开发一个带有Spring Boot和Angular 6的示例应用程序 我正在使用基于表单的登录的 spring 安全性

我在身份验证时面临以下问题

1(用户使用基于表单的登录进行身份验证,并在cookie中返回JSESSIONID

2(当浏览器发送下一个请求时,JSESSIONIDcookie 不会在请求中发送,从而导致基于 cookie 的身份验证失败

搜索了一下后,我找到了 Angular 6.x/Set jsessionid cookie 答案,它使用HttpInterceptor在请求中发送JSESSIONIDcookie。

但我的问题是:首先如何阅读JSESSIONID饼干? 我们需要为此编写任何服务吗?

除了上述方法,我们可以使用{withCredentials = true}方法,但它需要添加到代码中的每个请求中,这似乎不是一个有效的解决方案。

还有其他方法可以解决此问题吗?

请帮忙

  1. 当身份验证成功时,您必须从后端获取 JSESSIONID,并尝试将该 JSESSIONID 存储在 sesisonStorage(一个 STORAGE 变量(中。
  2. 接下来,正如你所说,我们肯定需要拦截器,因为对于病房上的下一个HTTP请求,我们需要设置这个JSESSIONID并需要触发其余服务。
  3. 所以你必须编写一个示例拦截器服务,它在HTTP调用期间拦截,这个点获取存储在STORE中的sessionId,并设置这个JSESSIONID并触发HTTP请求。

我可以给你示例示例,我们正在使用 JWT 身份验证 1. 在登录((期间,正在获取持有者 toke 并在会话存储中进行设置。(使用加密格式。 2.我有如下所示的书面和拦截器:

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let token= JSON.parse(this.store.getStoreItem('token'));
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next.handle(request);    
}
  1. 上述存储是存储服务的局部变量。 请以此作为参考,以防: https://www.js-tutorials.com/javascript-tutorial/use-localstorage-sessionstorage-using-webstorage-angular4/

感谢和问候, 基肖尔·库马尔。K