2

現在ログインしているユーザーに基づいてロケールを変更しようとしています。ハンドラーは正常に動作し、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);
    }
}
4

1 に答える 1

3

カスタムAuthenticationSuccessHandlerセットをロケールにするのではなくLocaleResolver、(認証オブジェクトを取得するために使用する) UserDetails オブジェクトからロケールを解決するカスタムを実装してみませんSecurityContextHolder.getContext().getAuthentication()か?

于 2013-06-18T20:59:20.507 に答える