Я пытаюсь заменить управление сеансом (в настоящее время управляется Каталиной/Tomcat) моего webapp для управления собственными сеансами.Shiro HttpSession в SessionListener?
Это должно быть довольно простая работа, как прорекламировали на сайте Сиро:
Прозрачная поддержка HttpSession - Если вы используете собственные сессий Широ, мы реализовали API сеанса HTTP и Servlet 2.5 API , так что вам не нужно менять какой-либо существующий код для использования Shiro.
Итак, вы заменили местного диспетчера сеансов на Shiro's DefaultWebSessionManager
, все должно работать из коробки.
Это также касается моего webapp, за исключением определенного javax.servlet.http.HttpSessionListener
. Этот прослушиватель больше не принимает события, поскольку использует управление сеансами Shiro.
Не беспокойтесь, я думал! Shiro предлагает собственный интерфейс org.apache.shiro.session.SessionListener
, который можно связать с диспетчером сеансов.
Однако этот интерфейс сильно отличается от javax.servlet.http.HttpSessionListener
. Прошло не более HttpSession
объектов, а Сиро слушатель передает свои собственные org.apache.shiro.session.Session
объекты с событиями.
Мои существующие работы по осуществлению только с HttpSession
объектов. Я обнаружил, что Shiro Session
может быть преобразован в HttpSession
:
// HttpServletRequest currentRequest;
// ServletContext servletContext;
// Session session;
HttpSession httpSession = new ShiroHttpSession(session, currentRequest, servletContext);
Однако нет никакого способа Acces HttpServletRequest и ServletContext от Shiro SessionListener
.
Любые идеи, как решить эту проблему, например. можете ли вы ответить на один из этих двух вопросов?
- Почему старый
javax.servlet.http.HttpSessionListener
уже не называется? - Как преобразовать Shiro
Session
объектов вHttpSession
объектов в силеSessionListener
?
Simpy put, весь код в моем старом SessionListener написан для работы с HttpSessions. Как я могу повторно использовать этот код без необходимости реорганизовывать все это для использования объектов Shiro Session? Это будет довольно много работы. –
@KarstenDaemen Какие методы HttpSession вы используете? У «сеанса» Сиро есть атрибуты и геттеры, но, очевидно, они недоступны для JSP и т. Д. –