Вступить в клуб →
средняявопросКэш и Redis в Spring

Пользователи видят чужие персональные рекомендации

@Cacheable("recommendations")
public List<ProductDto> recommendations() {
    long userId = SecurityContextHolder.getContext()
        .getAuthentication() ... // id текущего пользователя
    return engine.forUser(userId);
}

После включения кэша все пользователи видят рекомендации того, кто первым открыл страницу после истечения записи. Почему?

  • Ключ строится из параметров метода, а у метода их нет — ключ один на всех
  • SecurityContext не работает внутри методов с @Cacheable
  • Redis не различает сессии разных пользователей
  • Кэш сработал до аутентификации, поэтому пользователь не определился

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела