Spring MVC, как заставить обработчик контроллера обрабатывать все запросы до сопоставленных обработчиков?

Я написал веб-приложение с его смелыми контроллерами и сопоставлением обработчиков, все с Spring 3.0 и аннотациями контроллера. Теперь оказывается, что мне нужна простая и настраиваемая аутентификация. Я пока не хочу использовать ACEGI, потому что у меня нет времени его изучать. В идеале я хотел бы, чтобы у меня была процедура, которая вызывается перед каждым сопоставленным обработчиком, получает из HttpSession идентификатор пользователя, проверяет, вошел ли он в систему, и ключ сеанса, и если нет, перенаправляет на страницу входа. Я думал о перехватчике... проблема в том, что вам нужно использовать HandlerInterceptorAdapter, который имеет следующий метод:

 public boolean preHandle(
            HttpServletRequest request,
            HttpServletResponse response,
            Object handler) throws Exception {

это не позволит мне получить доступ к HttpSession, связанному с запросом. Как мне это решить?


person gotch4    schedule 16.02.2011    source источник


Ответы (1)


Вы уверены? Вы должны быть в состоянии получить сеанс через request.getSession().

person limc    schedule 16.02.2011
comment
конечно, почему бы и нет? Этот сеанс принадлежит тому конкретному пользователю, который делает запрос. Сеанс может существовать или не существовать в зависимости от того, создаете ли вы его для этого пользователя или нет, но в остальном это то, как в целом работает сеанс HTTP. Я не уверен, что вы имели в виду под безопасным. - person limc; 16.02.2011
comment
Я имею в виду с нитями и всем остальным. Я использую ‹bean class=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter p:synchronizeOnSession=true /›, чтобы иметь потокобезопасные объекты httpssession. это нормально? - person gotch4; 16.02.2011