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 при обновлении страницы и избежать ошибки авторизации.