Add wicket authentication dependency to pom.xml
<dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-auth-roles</artifactId> <version>1.5.5</version> </dependency>Project Structure
SignIn.html
<html> <head> <title>SignIn</title> </head> <body> <span wicket:id="signInPanel"/> </body> </html>
SignIn.java
package com.javaassist; import org.apache.wicket.authroles.authentication.panel.SignInPanel; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.request.mapper.parameter.PageParameters; public final class SignIn extends WebPage { public SignIn(final PageParameters parameters) { add(new SignInPanel("signInPanel")); } }
SignOut.html
<html> <head> <title>SignOut</title> </head> <body> <wicket:link><a href="HomePage.html">Home</a></wicket:link> </body> </html>
SignOut.java
package com.javaassist; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.request.mapper.parameter.PageParameters; public class SignOut extends WebPage { public SignOut(final PageParameters parameters) { getSession().invalidate(); } }
HomePage.html
<html> <head> <title>Hello World</title> </head> <body> <wicket:link><a href="SignOut.html">Sign Out</a></wicket:link> <h1> <span wicket:id="message">message will be replace here</span> </h1> </body> </html>HomePage.java
package com.javaassist; import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; @AuthorizeInstantiation("USER") public class HomePage extends WebPage { private static final long serialVersionUID = 1L; public HomePage(final PageParameters parameters) { add(new Label("message", new Model<String>("Welcome to java-assist"))); } }
Create WebSession Class to validate User, to get the User Roles
AppWebSession.java
package com.javaassist; import org.apache.wicket.authroles.authentication.AuthenticatedWebSession; import org.apache.wicket.authroles.authorization.strategies.role.Roles; import org.apache.wicket.request.Request; public class AppWebSession extends AuthenticatedWebSession { public AppWebSession(Request request) { super(request); } @Override public boolean authenticate(final String username, final String password) { final String WICKET = "java-assist"; // Check username and password (modify the code to validate the user from database) return WICKET.equals(username) && WICKET.equals(password); } @Override public Roles getRoles() { if (isSignedIn()) { // assing the role ( modify the code to add dynamic roles from database) return new Roles(Roles.USER); } return null; } }
Create AuthenticatedWebApplication class to get websession class and SignInPage class
WicketApplication.java package com.javaassist; import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession; import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication; import org.apache.wicket.markup.html.WebPage; public class WicketApplication extends AuthenticatedWebApplication { @Override public Class<HomePage> getHomePage() { return HomePage.class; } @Override protected Class<? extends AbstractAuthenticatedWebSession> getWebSessionClass() { return AppWebSession.class; } @Override protected Class<? extends WebPage> getSignInPageClass() { return SignIn.class; } }
web.xml (add wicket filter)
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>wicket application</display-name> <filter> <filter-name>wicket.application</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>com.javaassist.WicketApplication</param-value> </init-param> </filter> <filter-mapping> <filter-name>wicket.application</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
Run the Jetty server
Test the app "http://localhost:8080/" Use username and password as "java-assist"
No comments:
Post a Comment