Comment faire pour rediriger vers la page d'accueil si l'utilisateur accède à la page de connexion après avoir été connecté?

Ici, est mon de printemps de sécurité config:

<http pattern="/auth/login" security="none" />
<http pattern="/auth/loginFailed" security="none" />
<http pattern="/resources/**" security="none" />

<http auto-config="true" access-decision-manager-ref="accessDecisionManager">
    <intercept-url pattern="/auth/logout" access="permitAll"/>
    <intercept-url pattern="/admin/**" access="ADMINISTRATIVE_ACCESS"/>
    <intercept-url pattern="/**" access="XYZ_ACCESS"/>

    <form-login
        login-page="/auth/login"
        authentication-failure-url="/auth/loginFailed"
        authentication-success-handler-ref="authenticationSuccessHandler" />
    <logout logout-url="/auth/logout" logout-success-url="/auth/login" />
</http>

La authenticationSuccessHandler étend le SavedRequestAwareAuthenticationSuccessHandler s'assurer que l'utilisateur est redirigé vers la page qu'il avait demandé à l'origine.

Cependant, depuis /auth/login est marqué comme security="none", je n'arrive pas à rediriger l'utilisateur vers la page d'accueil s'il accède à la page de connexion après vous être connecté. Je crois que c'est le droit expérience de l'utilisateur trop.

J'ai essayé de le ci-dessous trop, mais le Principal objet est toujours null, sans doute à cause de la security="none" attribut de nouveau.

@RequestMapping(value = "/auth/login", method = GET)
public String showLoginForm(HttpServletRequest request, Principal principal) {
    if(principal != null) {
        return "redirect:/";
    }

    return "login";
}
InformationsquelleAutor adarshr | 2012-09-26