Я пытаюсь получить доступ к объекту сеанса из моего перехватчика с помощью интерфейса SessionAware
(я реализовал метод setSession
), но я не могу получить свой объект сеанса таким образом.
Затем я попытался ActionContext.getContext().getSession()
и смог получить сеанс, но я не знаю, но он становится пустым только в первый раз в каждом браузере для каждого пользователя, а затем он заполняется, когда вызывается другое действие,
Полагаю, что с сеансом что-то не так.Почему это дает мне пустую сессию только в первый раз?Устанавливает ли он что-либо только после первого пустого сеанса?
Если это так, то каждый будет показан как гость при первом запросе, а затем с именем пользователя при втором запросе и, следовательно, далее.
Или я неправильно получаю сеанс?
Я видел код для получения сеансов в перехватчиках, но это не работает для меня, так как не может найти константу HTTP_REQUEST
.
final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
HttpSession session = request.getSession(true);
Object user = session.getAttribute(Constants.USER_HANDLE);
Есть ли какие-либо предложения по решению любой из проблем?
Что-то, что я забыл упомянуть - мой сайт является безопасным сайтом (https), поэтому, если пользователь не вошел в систему,не позволил бы ему войти на сайт, и если он вошел в систему, по крайней мере, его имя пользователя должно быть там в сеансе.Разве это не должно быть?