Как сделать так, чтобы JSESSIONID передавался в cookies при обновлении страницы?

Как исправить ошибку авторизации при обновлении страницы после получения JSESSIONID в приложении Spring Boot OAuth2, используя Angular 7 в качестве клиента?
  • 2 января 2024 г. 21:57
Ответы на вопрос 2
1. Для того, чтобы JSESSIONID передавался в cookies при обновлении страницы, необходимо установить флаг HttpOnly для JSESSIONID cookies. В Spring Boot это можно сделать с помощью настройки server.servlet.session.cookie.http-only=true в файле application.properties.

2. Для исправления ошибки авторизации при обновлении страницы после получения JSESSIONID в приложении Spring Boot OAuth2 с Angular 7 в качестве клиента, необходимо убедиться, что Angular при обновлении страницы отправляет JSESSIONID в cookies.

Для этого можно использовать интерцептор HttpClient в Angular, чтобы добавить JSESSIONID в каждый запрос:

```typescript
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
  constructor(private authService: AuthService) {}

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const token = this.authService.getJsessionId();
    if (token) {
      req = req.clone({
        setHeaders: {
          Cookie: `JSESSIONID=${token}`
        }
      });
    }
    return next.handle(req);
  }
}
```

Затем добавьте этот интерцептор в провайдеры AppModule:

```typescript
providers: [
  {
    provide: HTTP_INTERCEPTORS,
    useClass: TokenInterceptor,
    multi: true
  }
]
```

Это позволит Angular отправлять JSESSIONID в cookies при обновлении страницы и избежать ошибки авторизации.
Проблема в серверном рендринге ангуляра
Похожие вопросы