J'ai une application Web Java EE 6 fonctionnant sur JBoss 7.1.1 dont certaines pages nécessitent une authentification et d'autres non. Pour les pages authentifiées, j'utilise Servlet 3.0 Programmatic Security comme décrit dans this previous post.Java EE 6 sécurité et redirection
Dans mon web.xml, je l'entrée suivante
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/loginError</form-error-page>
</form-login-config>
</login-config>
et dans ma classe de connexion, j'ai une méthode annotée avec @PostConstruct
où la page demandée est capturée: String previousURL = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(RequestDispatcher.FORWARD_QUERY_STRING)
Cependant, il évalue la page/login elle-même plutôt que la page demandée par l'utilisateur et était puis transmis par JBoss en raison des paramètres de configuration de connexion dans le fichier web.xml. Par conséquent, lorsque je redirige vers previousURL, cela me ramène simplement à la page de connexion, plutôt qu'à la page sur laquelle l'utilisateur a cliqué initialement. Qu'est-ce que je fais mal?
Merci d'avoir attrapé cela. Après l'avoir changé, j'obtiens toujours previousURL sur la page/login plutôt que sur la page demandée initialement. – Anand
Et vous êtes positif @Anand que les informations d'identification fournies par l'utilisateur sont authentifiées avec succès? – kolossus
Je le pense. Voici l'entrée du journal de JBoss: 'Excuting query: sélectionnez le mot de passe de PRINCIPAL où username =?, Avec le nom d'utilisateur: admin ... Utilisateur 'admin' authentifié, loginOk = true commit, loginOk = true ... Affecter un utilisateur au rôle Administration ... Utilisateur: admin est authentifié' – Anand