Код: Выделить всё
CookieValidationFilter
[*] Из углового фронта В: < /p>
Код: Выделить всё
401 Unauthorized
- ошибки Cors
- предупреждения в консоли браузера
Код: Выделить всё
no-referrer
[*] Правильно установлен фронт-энд, и я могу видеть его в инструментах Dev Browser под накладкой «Cookies». На вкладке «Сеть» не показывает заголовок cookie . Безопасный; SameSite = none .
Мой код такой, как ниже:
Код: Выделить всё
ContentCachingRequestFilter
Код: Выделить всё
@Component
public class ContentCachingRequestFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper((HttpServletRequest) servletRequest);
filterChain.doFilter(requestWrapper, servletResponse);
}
}
< /code>
CookieValidationFilter
Код: Выделить всё
@Component
public class CookieValidationFilter extends OncePerRequestFilter {
private final ObjectMapper objectMapper;
public CookieValidationFilter(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String cookieHeader = request.getHeader(HttpHeaders.COOKIE);
boolean hasSessionCookie = cookieHeader != null && Arrays.stream(cookieHeader.split(";"))
.map(String::trim)
.anyMatch(c -> c.startsWith("SessionCookie=") && !c.equalsIgnoreCase("SessionCookie="));
if (!hasSessionCookie) {
ApiResponse apiResponse = ApiResponse.builder().httpStatus(Constants.UNAUTHORISED_ACCESS_CODE)
.statusMessage(Constants.UNAUTHORIZED_MSG)
.userMessage(Constants.YOU_ARE_NOT_AUTHORIZED_TO_ACCESS_THE_FEATURE_MSG).errorMessage(null)
.data(null).messageSeverity(null).validationErrors(null).build();
response.setStatus(Constants.UNAUTHORISED_ACCESS_CODE);
response.setContentType("application/json");
response.getWriter().write(objectMapper.writeValueAsString(apiResponse));
return;
}
filterChain.doFilter(request, response);
}
}
< /code>
Why would accessing or logging headers (e.g., with request.getHeaderNames()
[*] Расширенное OnePerquestFilter для ContentCachingRequestFilter
[*] Обеспечение правильной настройки CORS (
Код: Выделить всё
allowCredentials(true)
[*] Обеспечение использования фронтальных средств: true
[*] cookie отправляется с samesite = none; Безопасный; Httponly < /code> < /li>
< /ul>
Тем не менее, поведение противоречиво, если не добавлено ведение журнала отладки, что не имеет смысла. < /P>
: < /h3>
- < /br />
< / /li>
< /br /li>
< /br /li>
Встроенный - Работаю локально с помощью HTTPS включена
Подробнее здесь: https://stackoverflow.com/questions/796 ... -are-added