L’authentification avec Wicket
Une chose primordiale au niveau du développement d’application web est l’authentification. Nous allons voir ici comme mettre en place ce mécanisme au niveau d’une application wicket:
Tout d’abord il faut utiliser le module wicket-auth.
La première étape est d’écrire la classe de l’application qui au lieu d’étendre la classe WebApplication il s’agit d’étendre la classe : AuthenticatedWebApplication
[UPDATE] Mise à jour de l’exemple suite au commentaire de Philoops
[java] public class MonAppWeb extends AuthenticatedWebApplication { public static class MaSession extends AuthenticatedWebSession { public MaSession(AuthenticatedWebApplication application) { super(application); } public boolean authenticate(String username, String password) { //tout type d'authentification peut être fait return username.equals("vincent") && password.equals("mdp"); } public Roles getRoles() { if (isSignedIn()) { return new Roles("RoleUtilisateur"); } return null; } } protected Class< ? extends AuthenticatedWebSession> getWebSessionClass() { return MaSession.class; } protected Class< ? extends SignInPage> getSignInPageClass() { return AuthPage.class; } public Class getHomePage() { return Accueil.class; } }
l’application est maintenant en place il reste à definir la page pour l’authentification :
[java] public final class AuthPage extends wicket.authentication.SignInPage { }
[xml] <html> <head> <title>Autentification</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <h2>Identifiication</h2> <i>login et mot de passe</i> <p> <span wicket:id="signInPanel"/> </body> </html>
On definit maintenant une page pour se deconnecter :
[java] public class SignOutPage extends wicket.authentication.SignOutPage { }
[xml] <html> <head> <title>Deconnection</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <h2>Aurevoir!</h2> <p> <wicket:link> <a href="Accueil.html">Accueil</a> </wicket:link> </body> </html>
On peut maintenant definir 2 pages : une qui necessite une identification et l’autre accessible à tout le monde. Notons que l’authentification se fait maintenant par annotation java
[java] public class Accueil extends WebPage { }
[xml] <html> <head> <title>Accueil</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <h2>Bienvenue</h2> Page accessible à tout le monde. <p> <wicket:link><a href="AdminPage.html">Page administrateur</a></wicket:link><br/> <wicket:link><a href="SignOutPage.html">Deconnection</a></wicket:link> </body> </html>
[java] @AuthorizeInstantiation("RoleUtilisateur") // page necessitant une authentification public class AdminPage extends WebPage { }
[xml] <html> <head> <title>Page administrateur</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <h2>Administrateur
<p> <wicket:link><a href="Accueil.html">Accueil</a></wicket:link><br/> <wicket:link><a href="SignOutPage.html">Deconnection</a></wicket:link> </body> </html>
Et voila, ce code est suffisant à lui même pour fonctionner.






