2016-10-01 4 views
0

Я реализую одно веб-приложение, которое является неавторизованным для нового пользователя, и оно будет использоваться другим веб-приложением, т.е. не используется напрямую конечным пользователем, но родительское веб-приложение не входит в мой контроль , Таким образом, через мое веб-приложение новый пользователь может купить продукт, чем он хочет, предоставив свои личные, контактные данные, и я реализую для него управление сеансами.Http Session для неаутентифицированного приложения

Итак, я реализовал это ниже, и теперь хочу предложить вашему предложению сделать его лучше.

1). Когда родительский веб-приложение перенаправляется на мой URL-адрес веб-приложения, я вызываю два сервлета (из-за структуры структуры).

  • Первый сервлет, будет удаление старшего объекта MyUser из HttpSession, если есть. (Как нет никакого выхода из системы в моем приложении, и читать, что onbeforeunload не является надежным), и он также удаляет объект MyUser из Threadlocal (что я реализовал для поддержания состояния каждого потока отдельно).

  • После этого второй сервлет создает новый объект и связывает его с HttpSession и использует этот сеанс для сохранения прерывистых данных пользователя для взаимосвязанных служб.

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

+0

Вообще говоря, я бы сказал, просто избежать всего этого и пойдите с Spring OAuth2. – chrylis

+0

@chrylis Спасибо, но я не могу этого сделать из-за наследия. – Tenacious

+0

Ты пишешь новое приложение, ты сказал. – chrylis

ответ

1

Вы можете использовать сервлет фильтр, который будет делать работу Serlvet1 т.е.

Удаление старшего объекта MyUser из HttpSession, если есть. (как нет никакого выхода из системы в моем приложении, и прочитайте, что onbeforeunload не является надежным), и он также удаляет myUser ob ject из Threadlocal (что я реализовал для поддержания состояния каждого потока отдельно).

Унаследованное приложение будет перенаправлено на ваш сервлет 2, в котором будет настроен фильтр сервлета.

Добавляя сервлет фильтр, то управление первым достигнет сервлет фильтра, в котором вы выполняете логику удаления сеанса пользователя и передать управление servlet2