2010-05-24 3 views
2

J'ai essayé de rechercher un poste précédent lié à mon problème, mais je n'ai trouvé aucun. J'ai un scénario où dans la page gère 3 scénarios différents et l'un d'entre eux ne fonctionne pas. Cette page renvoie un contenu différent selon que l'utilisateur est authentifié ou anonyme.Sécurité de printemps - même page pour livrer un contenu différent en fonction du rôle de l'utilisateur

localhost: 8080/myApp/muUrl test = authenticatedContent -> utilisé pour le scénario 1 localhost: 8080/myApp/muUrl test = anonymousContent -> utilisé pour le scénario 3 Scénario:

1) Utilisateur authentifié accédant à l'URL de la page - l'utilisateur obtient des informations correctes. Fonctionne bien

2) URL de la page accédée par l'utilisateur anonyme avec paramètres nécessitant une authentification - Si elle est anonyme, il y a un deuxième niveau de contrôle sur le contenu auquel elle accède. par exemple, en fonction des paramètres GET, il existe une logique personnalisée pour déterminer si l'utilisateur doit être authentifié. Dans ce cas, la page est redirigée vers la page de connexion (très bien).

3) Utilisateur anonyme accédant à l'URL de la page avec des paramètres qui n'ont pas besoin d'authentification - dans ce cas, je reçois SAvedRequest et redirige vers l'URL qui me conduit à une boucle infinie. Est-ce que je manque quelque chose de très évident ou est-ce qu'il y a un moyen dans AuthenticationProcessFilterEntryPoint de dire "NE PAS rediriger vers la page LOGIN mais la traiter"?

merci.

+0

Je courais un problème similaire. Avez-vous trouvé une solution à ce problème? Si oui, n'hésitez pas à le partager ici. – balteo

Répondre

0

J'ai enfin trouvé une solution (quelqu'un me l'a suggéré sur les forums de printemps). L'idée est d'utiliser l'annotation @PreAuthorize dans les contrôleurs comme décrit ici: see here

Voir exemple de code ci-dessous:

@RequestMapping("/") 
@PreAuthorize("isAuthenticated()") 
public String authenticatedHomePage() { 
    return "authenticatedHomePage"; 
} 

@RequestMapping("/") 
public String homePage() { 
    return "homePage"; 
} 
Questions connexes