Nano Hash - криптовалюты, майнинг, программирование

Получение сеанса uuid, установленного в Redis

Я устанавливаю атрибут сеанса всякий раз, когда пользователь входит в систему, как это request.getSession().setAttribute(sessionUuid, user);. sessionUuid - это uuid, который я устанавливаю. Но похоже, что этот sessionUuid не является идентификатором сеанса, Redis сам генерирует идентификатор сеанса. Что-то вроде этого

1) "spring:session:expirations:1597563240000"
2) "spring:session:sessions:expires:9dfef52d-d94a-4bcf-a08e-4a362b36f332"
3) "spring:session:sessions:9dfef52d-d94a-4bcf-a08e-4a362b36f332"

Насколько я понимаю, uuid сеанса равен 9dfef52d-d94a-4bcf-a08e-4a362b36f332 для атрибута, который я установил.

Что я пытаюсь понять, так это то, что, поскольку redis генерирует идентификатор сеанса сам по себе, то как я должен получить идентификатор сеанса redis, чтобы в следующий раз, когда пользователь делает запрос, я мог проверить, активен сеанс или нет?

if(request.getSession().getAttribute("9dfef52d-d94a-4bcf-a08e-4a362b36f332") != null) {
    return (UserSessionComponent) request.getSession().getAttribute(session);
}

Или Redis ищет весь сеанс для этого конкретного атрибута?


  • Сеанс привязан к одному пользователю и хранит ключи-значения (объекты) для нескольких запросов; поэтому вам не нужен sessionId. 16.08.2020
  • Я знаю, но вам нужен идентификатор сеанса от интерфейса к серверу, чтобы проверить, действителен ли пользователь или нет. 16.08.2020
  • «... проверить, действителен ли пользователь или нет ...» вы хотите обрабатывать запрос только при наличии сеанса? request.getSession() создаст новый сеанс, если его нет, используйте request.getSession(false), это вернет ноль, если сеанса нет. 16.08.2020
  • Нет, я разрешаю им войти в систему, если сеанса нет. 16.08.2020
  • Вы не думаете, что request.getSession(false) вернет весь сеанс пользователя? Я хочу получить сеанс пользователя на основе идентификатора сеанса, установленного в Redis 16.08.2020
  • если вы разрешаете несколько сеансов, то у пользователя может быть несколько сеансов, но тогда пользователь все еще «действителен», не так ли? 16.08.2020
  • Да, но что меня действительно удерживает, так это то, что, скажем, мы получили HttpSession session из интерфейса. И, выполняя request.getSession(false), как это проверяет сеанс, который мы получили от внешнего интерфейса к серверу Redis? Я не понял эту часть. 16.08.2020
  • Непонятки о том, как работает обработка веб-сеансов Java 16.08.2020

Ответы:


1

Хорошо, я думаю, что я получил это путем экспериментов. Итак, для читателей SO мы создаем новый сеанс, используя этот HttpSession newSession = request.getSession(true);, это вернет сеанс или создаст новый сеанс, если он не существует.

И HttpServletRequest будет иметь сеанс всякий раз, когда пользователь делает запрос, или у него может не быть сеанса в первый раз. Этот request.getRequestedSessionId() даст тот же uuid сеанса, который установлен на сервере Redis, в данном случае это 9dfef52d-d94a-4bcf-a08e-4a362b36f332, иначе он будет нулевым, если это первый раз.

Затем используйте request.getSession().getAttribute(session);, если он возвращает значение null, что означает, что срок действия сеанса истек, иначе это вернет значение.

Кстати, это хорошее чтение на весенней сессии.

22.08.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..