Comment gérer HTTP 403 avec Spring Security 3.0.x
Je suis confronté à un petit problème avec Spring Security 3.0.x (3.0.2 en particulier pour le moment). L'ensemble de l'application, je travaille sur fonctionne parfaitement sauf quand quelqu'un qui n'a pas les autorités essaie de se connecter.
Quand il se produit, l'utilisateur est redirigé vers la page de "bienvenue", puisque son nom d'utilisateur/mot de passe sont valides, et qu'il reçoit une jolie page blanche avec ceci : "Erreur 403: Accès refusé"
Donc, j'ai été chercher sur le net en essayant de trouver comment ce problème peut être géré. Jusqu'à présent, j'en suis venu à la conclusion, s'il vous plaît corrigez-moi si je me trompe, que c'est géré par la ExceptionTranslationFilter. Mais je ne comprends pas très bien la façon de faire toute la bonne utilisation de cette information.
J'ai tryied à modifier mon SecurityContext.xml pour ajouter un accès refusé-gestionnaire de tag à mon http tag, mais il ne fonctionne pas. Ai-je besoin d'ajouter plus de cette balise pour le faire fonctionner? Est-il d'autres possibilités de faire ma demande de plus convivial?
Modifier : je voudrais rediriger vers une page, nous allons la dit 403.html par exemple.
Sincerly,
Grâce
source d'informationauteur ALOToverflow | 2010-11-15
Vous devez vous connecter pour publier un commentaire.
Je ne comprends toujours pas pourquoi vous avez eu à mettre en place votre propre gestionnaire d'accès... j'ai actuellement confrontés à la même tâche:
N'oubliez pas de spécifier le gestionnaire de votre Contrôleur:
Mise à jour pour le Printemps de Démarrage(Oct 2014):
Aujourd'hui, nous n'avons pas vraiment de retour de vues pour cette tâche depuis angular js coups de pied de sorte que vous pouvez utiliser votre échec/gestionnaire de succès et retour sur mesure réponses JSON. Pour nous, il suffit d'utiliser l'échec de gestionnaire, mais vous pouvez choisir où vous souhaitez que votre contrôle pour le coup. En général, nous n'utilisons pas de vue les résolveurs comme il y a des tuiles de l'INTERFACE utilisateur cadres(comme angulaire partiels) capable de construire des pièces en une seule page pour vous. Html morceaux sont stockés sur le serveur et servi tout simplement que les ressources statiques.
Permet de jouer avec Tomcat Intégré pour obtenir un comportement similaire à web.xml !
}
D'une façon plus propre pour gérer l'erreur redirige consiste à utiliser le
<error-page>
et<error-code>
balises dans votre web.xml. Voir ci-dessous pour un exemple:Ce bloc de code sera redirigé vers l'emplacement spécifié chaque fois qu'il rencontre l'erreur spécifiée code.
Ceci élimine le besoin pour le code d'autorisation à l'intérieur de la logique de l'application.
J'ai trouvé comment faire. Par la mise en œuvre de la AccessDeniedHandler de l'interface et de la poignée de la méthode que je peut, facilement, de contrôler la façon dont les Http 403 erreur est gérée.
De cette façon, vous pouvez ajouter différents éléments dans la session, puis de les intercepter sur votre jsp.
Le fichier xml ressemble alors à ceci :
La classe java :
Et un exemple jsp :
La façon de faire de ce travail est de définir un gestionnaire dans votre point d'entrée:
Vous pouvez la définir comme votre point d'entrée en définissant ce que vous point d'entrée dans le fichier de configuration xml:
Vous avez vérifié la balise dans une application et pour moi, il semble fonctionner.
où handle403Url je veux appeler pour gérer cette erreur (par exemple pour afficher un message d'erreur).
N'oubliez pas que vous avez à permettre à cette url dans les filtres de sorte qu'il peut être atteint par cette autorité d'utilisateur, de sorte que dans le début de la flters vous devez ajouter quelque chose comme ceci: