Vous pouvez utiliser container managed authentication using deployment descriptors. Cela ne nécessite pas de code supplémentaire de votre côté attendre d'un formulaire de connexion simple avec un champ d'entrée et mot de passe qui soumet à l'adresse URL j_security_check
. Voici un exemple de base:
<form action="j_security_check" method="post">
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit">
</form>
En supposant que vous avez des pages privées dans un dossier nommé /private
et la page de connexion ci-dessus se trouve dans /private/login.jsp
, puis ajoutez les entrées suivantes à web.xml
de la webapp:
<security-constraint>
<web-resource-collection>
<web-resource-name>Private</web-resource-name>
<url-pattern>/private/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>friends</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Private</realm-name>
<form-login-config>
<form-login-page>/private/login.jsp</form-login-page>
<form-error-page>/private/error.jsp</form-error-page>
</form-login-config>
</login-config>
Ensuite, dans le conteneur de servlet que vous utilisez, vous devez configurer ce que l'on appelle un Realm pour Private
. Comme on ne sait pas quel servletcontainer vous utilisez, voici un document ciblé Tomcat 8.0: Realm Configuration HOW-TO. Vous pouvez le configurer pour vérifier le combo nom d'utilisateur/mot de passe sur un fichier XML ou une base de données ou même un emplacement personnalisé.
Une alternative est complètement différent de homegrow un mécanisme de connexion à l'aide d'un Filter
qui vérifie la présence de l'utilisateur connecté à la portée de session. Voir this et this répondre comment y parvenir.
Ceci est spécifique à Apache HTTPD. Cela ne fonctionnera que s'il utilise le serveur HTTPD Apache en tant que proxy devant le conteneur JSP/Servlet. – BalusC