[JAVA] Comment rediriger après la connexion de l'utilisateur avec Spring-security

Supposons que vous souhaitiez créer un écran qui récupère certaines conditions de la base de données et redirige vers l'écran spécifié si les conditions sont remplies.

Dans un tel cas, si vous utilisez Spring-security, vous pouvez utiliser un filtre personnalisé. Vous pouvez définir un filtre et exécuter la redirection dans cette classe.

Type de filtre défini par Spring-security

Le moment d'insertion d'un filtre avec Spring-security est indiqué ci-dessous.

Choses susceptibles d'être utilisées

Les filtres personnalisés peuvent être définis avant ou après ce qui précède, ou comme alternative au filtre lui-même.

spring-security.xml


<http>
    <!--Avant-->
    <custom-filter before="FORM_LOGIN_FILTER" ref="myFilter" />
    <!--Comme alternative à lui-même-->
    <custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" />
    <!--arrière-->
    <custom-filter after="FORM_LOGIN_FILTER" ref="myFilter" />
</http>

Comment définir le filtre lui-même

Il semble préférable d'utiliser GenericFilterBean pour les filtres Spring. Définissez une classe qui hérite de cette classe à un endroit approprié dans le projet.

Ensuite, définissez l'espace de noms de la classe et l'id sur Spring en XML. Ce faisant, il est destiné à être utilisé dans la sécurité du ressort.

spring-context.xml


<beans:bean id="myFilter" class="org.baeldung.security.filter.CustomFilter"/>

Pour éviter une double expédition

Lorsque j'écris un filtre qui affecte l'ensemble du projet comme celui-ci, j'obtiens la double erreur Dispatch que j'avais l'habitude de voir dans Struts. Cette:

java.lang.IllegalStateException: Cannot forward after response has been committed

L'essentiel est que cela se produit lorsque vous essayez à nouveau de filtrer et de rediriger les demandes qui ont une destination fixe.

Pour contourner ce problème, reportez-vous au Tableau 6.1. Alias de filtre standard et ordre ci-dessus. Effectuez le filtrage souhaité avant de décider de la destination de la demande.

Recommended Posts

Comment rediriger après la connexion de l'utilisateur avec Spring-security
[Rails] Comment gérer les modifications d'URL après le rendu
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Comment démarrer avec Slim
Comment entourer n'importe quel caractère avec "~"
Comment utiliser mssql-tools avec Alpine
Comment recadrer une image avec libGDX
Comment ajuster TextPosition avec l'extension de clavier iOS
Comment partager des fichiers avec Docker Toolbox
Comment compiler Java avec VsCode & Ant
[Java] Résumez comment comparer avec la méthode equals
[Android] Comment gérer les thèmes sombres
Comment utiliser BootStrap avec Play Framework
Comment changer d'images miniatures avec JavaScript
Comment faire un contrôle basé sur l'API avec cancancan
Comment réaliser le téléchargement de fichiers avec Feign
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment implémenter TextInputLayout avec la fonction de validation
Comment gérer les erreurs de connexion avec l'appareil
Comment supprimer des données avec une clé externe
Comment tester l'étendue privée avec JUnit
Comment surveiller nginx avec docker-compose avec datadog
Comment gérer les actifs de précompilation a échoué.
Comment réaliser le téléchargement de fichiers avec Feign
Comment créer un environnement Rails 6 avec Docker
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
[Rails6] Comment connecter la fonction d'affichage générée par Scaffold avec la fonction utilisateur générée par devise
Comment télécharger Oracle JDK 8 rpm avec curl
[Java] Comment tester s'il est nul dans JUnit
Comment se moquer de chaque cas avec Mockito 1x
Comment se moquer de chaque cas avec PowerMock + Mockito1x
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment enregistrer dans plusieurs tables avec une seule entrée
J'ai essayé de gérer les informations de connexion avec JMX
Comment tester les interruptions pendant Thread.sleep avec JUnit
Comment utiliser h2db intégré avec Spring Boot
Comment utiliser le framework Java avec AWS Lambda! ??
Erreur lors de l'installation du bundle après la mise à niveau vers Catalina
Essayez d'implémenter la fonction de connexion avec Spring Boot
Comment créer plusieurs menus déroulants avec ActiveHash
Comment utiliser l'API Java avec des expressions lambda
[Validation] rails Comment spécifier après la date d'aujourd'hui
Comment démarrer avec Eclipse Micro Profile
Comment donner votre image à quelqu'un avec Docker
Comment tout insérer en même temps avec MyBatis
Comment créer une API avec GraphQL et Rails