2013-12-16 3 views
0

Я работаю с весной безопасности, и я внедрил свой костюм UserDetailsService.loadUserByUsername, который возвращает костюм UserDetails. Моя проблема в том, что я хочу, чтобы в моей реализации UserDetailsService была получена информация из HttpServletRequest, более конкретно я хотел бы получить request.getLocale(); Как я могу это сделать?Как получить информацию HttpServletRequest из UserDetailsService

ответ

1

Вы должны быть в состоянии (в зависимости от конфигурации), чтобы использовать

LocaleContextHolder.getLocaleContext().getLocale(); 

LocaleContextHolder хранит staticThreadLocal объект, который хранит Locale для вашего запроса.

Возможно, вам понадобится зарегистрировать RequestContextListener с вашим контейнером Servlet. .

+0

спасибо, что я пытаюсь сейчас – lior

+0

ОК, я попробовал и LocaleContextHolder.getLocaleContext() GetLocale(); return null, но LocaleContextHolder.getLocale(); работает. im пытается понять, в чем разница между ними? http://docs.spring.io/spring/docs/3.1.4.RELEASE/javadoc-api/org/springframework/context/i18n/LocaleContextHolder.html – lior

+0

@lior Это удивительно, потому что 'DispatcherServlet' должен установить' LocaleContext 'в свой' initContextHolders() 'метод. Кажется, вы используете Spring 3.1.4. Я на 3.2+. Может быть, в этом и есть разница. Внедрение изменений в более поздних версиях. –

0

Вы можете передать его от контроллера к вашей службе, при добавлении нового параметра в вашу службу

+0

Функция UserDetailsService вызывается во время проверки подлинности с использованием весны. как передать это ему? – lior

Смежные вопросы