0
我試圖根據當前登錄的用戶更改語言環境。處理程序工作正常,I18n,但我不明白我怎麼能通過LocaleResolver
到處理程序?彈簧安全:登錄時更改語言環境
<http use-expressions="true">
<form-login login-page="/wellcome/" login-processing-url="/login" default-target-url="/" always-use-default-target="false"
authentication-failure-url="/wellcome/?error=1" username-parameter="email" password-parameter="password"
authentication-success-handler-ref="authenticationSuccessHandler" />
<remember-me key="butler_crm" token-validity-seconds="-1" />
<logout invalidate-session="true" logout-success-url="/" logout-url="/logout"/>
<intercept-url pattern="/wellcome/" access="permitAll"/>
<intercept-url pattern="/login" access="permitAll"/>
<intercept-url pattern="/**" access="authenticated"/>
<custom-filter ref="ajaxTimeoutRedirectFilter" after="EXCEPTION_TRANSLATION_FILTER"/>
</http>
<beans:bean id="authenticationSuccessHandler" class="com.ejl.butler.spring.AuthenticationSuccessHandler" />
的處理程序:
public class AuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
/*@Autowired
private LocaleResolver localeResolver;*/
/**
*
*/
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws ServletException, IOException {
UserDetailsExtended user = (UserDetailsExtended) authentication.getPrincipal();
/*localeResolver.setLocale(request, response, new Locale(user.getCommunicationLanguage()));*/
super.onAuthenticationSuccess(request, response, authentication);
}
}
看看這個問題和答案一個完整的例子:http://stackoverflow.com/questions/8531649/change-locale-on-login – Ralph
@Ralph問題,如果我使用該代碼,我得到的'找不到符合條件的[org.springframework.web.servlet.LocaleResolver]類型的合格bean。 – nKognito
我重複了一遍,我通過對登錄事件使用事件處理程序解決了這個問題。當使用事件時,事件處理程序bean可以在spring web上下文中配置,所以本地解析器可用。 – Ralph