2017-09-19 1 views
0

J'utilise Spring Security 4. j'avais ma configuration comme:Connexion ne fonctionne pas avec formulaire de connexion

http 
    .requiresChannel() 
     .and() 
    .authorizeRequests() 
     .antMatchers("<URLS>").hasAnyAuthority(CUSTOMER.toUpperCase(), BRANCH.toUpperCase()) 
     .and() 
    .authorizeRequests() 
     .anyRequest().authenticated() 
     .and() 
    .formLogin() 

avec cette configuration, je suis en mesure d'accéder à l'URL de connexion de printemps:

localhost:9080/contextpath/login?username=BNH123456&password=pass 

Mais maintenant, quand j'utilise une configuration de formulaire de connexion comme suit:

http 
    .requiresChannel() 
     .and() 
    .authorizeRequests() 
     .antMatchers("<URLS>").hasAnyAuthority(CUSTOMER.toUpperCase(), BRANCH.toUpperCase()) 
     .and() 
    .authorizeRequests() 
     .anyRequest().authenticated() 
     .and() 
    .formLogin() 
     .loginPage(journey.equalsIgnoreCase("customer") ? "/" : "/#!/login") 

Je ne peux pas accéder l'URL de connexion du Spring. Il dit:

Erreur 404.

Est-il nécessaire de définir un contrôleur personnalisé lorsque je définis formulaire de connexion?

Je souhaite utiliser mon formulaire de connexion personnalisé, mais il utilise l'URL de connexion de Spring. (Si je clique sur une demande de connexion à Postman, il doit s'authentifier.)

Quelqu'un peut-il vous guider?

+1

«#» ne sera pas reçu sur le serveur côté client ancres et ne sera pas envoyé au serveur. –

+0

Nous utilisons angulaire sur frontend et nous avons 2 types de voyages. pour le parcours client ma page d'accueil est "/" mais pour le voyage du personnel ma page d'accueil est "/ #!/login". angulaire envoie le nom d'utilisateur et le mot de passe à backend pour validation. quand je n'ai pas mis "loginform" cela a bien fonctionné, mais quand j'ai ajouté, la même URL localhost: 9080/contextpath/login? nom d'utilisateur = BNH123456 & mot de passe = passer cessé de fonctionner. – kenthewala

+1

Pourquoi devrait-il être différent ... Il suffit d'appeler le même point d'entrée. Et non votre page d'accueil n'est pas '/ #!/Login', c'est toujours'/'. Angular analyse la partie '#!/Login'. –

Répondre

0

Si vous modifiez l'URL de la page de connexion, vous modifiez également l'URL de connexion, voir FormLoginConfigurer#loginPage:

Impact sur les autres paramètres par défaut

Mise à jour de cette valeur, a également un impact un certain nombre de autres valeurs par défaut. Par exemple, les valeurs par défaut sont les suivantes lorsque seul formLogin() a été spécifié.

  • /connexion GET - le formulaire de connexion
  • POST
  • /login - processus les informations d'identification et authenticate valide l'utilisateur
  • /Erreur de connexion GET - redirection, pour l'authentification des tentatives ratées
  • /login? GET dconnecter - rediriger ici après la connexion avec succès

Si «/Authentifier » a été transmis à cette méthode, il mettre à jour les paramètres par défaut, comme indiqué ci-dessous:

  • /GET authentifiez - le formulaire de connexion
  • /POST authentification - processus et les informations d'identification valides si Authentifier l'utilisateur
  • /Erreur d'authentification GET - redirection, pour l'authentification a échoué les tentatives
  • /authentification?vous déconnecter GET - rediriger ici après la connexion avec succès

Il y a deux solutions: