2011-05-21 4 views
4

Je tente de coder un formulaire de connexion qui transmet le nom d'utilisateur et le mot de passe à une servlet et laisse l'utilisateur se connecter.Java EE Login Page Problème

Ensuite, dans le servlet, i lo

request.login(username, password); 

mais il émet une exception qui n'a pas réussi à authentifier l'utilisateur.

String authType = request.getAuthType(); 
if(authType != null) { 
request.login(username, password); 
} 
  1. Je me demande comment coder une page de connexion simple.
  2. Quelles sont les utilisations de request.authenticate (response);

Je l'ai essayé et il sort un écran qui ne peut plus continuer.

  1. J'essaie de se référer cette page http://download.oracle.com/javaee/1.4/tutorial/doc/Security5.html que je pense devez d'abord configurer l'authentification avant la connexion et ajouter un peu de l'utilisateur.

Aidez-nous s'il vous plaît.

Merci.

Répondre

4

L'utilisation de la méthode HttpServletRequest#login() indique que vous utilisez Servlet 3.0 qui fait partie de Java EE 6. Pourtant, vous lisez un didacticiel J2EE 1.4 datant de 7,5 ans. Je suggère de mettre ce tutoriel poussiéreux de côté et de lire le Java EE 6 tutorial à la place. La sécurité gérée par conteneur démarre here.

Retour à votre problème concret, la volonté login() (as documented) lancer une exception lorsque la connexion est invalide ou lorsque le conteneur n'a pas Royaume definied du tout. En supposant que vous êtes certain que le nom d'utilisateur/mot de passe est valide, ce sera probablement la dernière cause. Comment le faire dépend exactement du servletcontainer en question. Consultez simplement sa documentation en utilisant le mot-clé "Royaume". Par exemple, pour Tomcat 7.0, c'est le Realm Configuration HOW-TO. Si vous avez les noms d'utilisateur/mots de passe dans une base de données SQL, vous voudrez probablement utiliser le JDBCRealm.

Une fois que vous avez configuré un Realm au niveau du servletcontainer, vous pouvez utiliser la méthode login() comme vous le souhaitez. N'oubliez pas d'ajouter un <security-constraint> au web.xml conformément au didacticiel Java EE 6 pour restreindre l'accès à certains modèles d'URL et spécifier l'URL de la page de connexion.

+0

Comment configurer le niveau du conteneur de servlet de domaine avec glassfish? – peterwkc

+0

Cela fonctionne. Merci de votre aide. – peterwkc

+0

De rien. Dans Glassfish, vous pouvez le configurer dans la section * Configuration> Sécurité> Realms * de la console d'administration. Vous pouvez trouver ici un blog soigné qui explique comment configurer un JDBCRealm (avec un pool de connexions JDBC pour MySQL): https://www.infosecisland.com/blogview/5522-Configuring-Security-in-Glassfish-v3.html – BalusC