L'authentification avec Wicket
By Vincent DEMAY, Sunday 15 October 2006 :: Wicket :: #24 :: rss
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
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
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 :
public final class AuthPage extends wicket.authentication.SignInPage { }
<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 :
public class SignOutPage extends wicket.authentication.SignOutPage { }
<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
public class Accueil extends WebPage { }
<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>
@AuthorizeInstantiation("RoleUtilisateur") // page necessitant une authentification public class AdminPage extends WebPage { }
<html> <head> <title>Page administrateur</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <h2>Administrateur</h2> <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.
Power by
Comments
1. Le Tuesday 26 December 2006 , par philoops
2. Le Tuesday 26 December 2006 , par Vincent DEMAY
3. Le Monday 18 June 2007 , par hakimkiom
Add a comment