2010-04-04 6 views
0

J'ai installé Spring Security 3 de base en utilisant ma propre page de connexion. Ma configuration est ci-dessous. J'ai la page de connexion et d'inscription accessible à tous, ainsi que la plupart des autres choses. Je suis nouveau à Spring Security et je comprends que si un utilisateur essaie d'accéder à une ressource protégée, il sera redirigé vers la page de connexion définie. Et lors de la connexion réussie, ils sont pris à une autre page, à la maison dans mon cas. Je veux garder le dernier comportement; cependant, je voudrais préciser que si un utilisateur essaie d'accéder à certaines ressources, il est redirigé vers la page d'inscription, pas la page de connexion. Actuellement, dans mes contrôleurs annotés, je vérifie le contexte de sécurité pour voir si l'utilisateur est connecté et sinon je les redirige vers la page d'inscription. Je ne fais cela actuellement avec deux URL et pas d'autres. Cela semblait redondant, j'ai donc essayé de créer un HandlerInterceptor pour rediriger ces requêtes mais j'ai réalisé qu'avec les annotations, vous ne pouvez pas spécifier de requêtes spécifiques à traiter - elles le sont toutes. Donc, je me demande s'il y a un moyen d'implémenter ce type de gestion d'URL spécifique dans Spring Security, ou est-ce que la route HandlerInterceptor est ma seule option? Merci!Spring HandlerInterceptor ou Spring Security pour protéger les ressources

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/login*" access="permitAll"/> 
    <intercept-url pattern="/signup*" access="permitAll"/> 
    <intercept-url pattern="/static/**" filters="none" /> 
    <intercept-url pattern="/" access="permitAll"/> 
    <form-login login-page="/login" default-target-url="/home"/> 

    <logout logout-success-url="/home"/> 

    <anonymous/>   
    <remember-me/>    
</http> 
+0

Pourquoi ne pas faire ce que font la plupart des sites et avoir deux formulaires sur une seule page, l'un pour vous connecter si vous avez déjà un compte et l'autre pour vous inscrire à un nouveau compte? – Gandalf

+0

@Gandalf Merci pour la réponse. En fait, la page d'inscription a un lien vers la page de connexion et le texte dirigeant l'utilisateur si ils se sont déjà inscrits. Votre idée de combiner les deux n'est pas mauvaise, mais nous aimerions rester avec ce que nous avons pour l'instant. – richever

Répondre

0

Vérifiez ce lien Adding Custom Filters - je suppose que vous devez étendre la UsernamePasswordAuthenticationFilter avec votre propre version qui fait la logique que vous avez décrit ci-dessus, plutôt que d'utiliser la configuration automatique et l'élément <form-login>.