-- 體驗範例程式 --
本範例程式和先前範例程式相比,程式碼變得更為簡潔,而且需要修改的部份不多,茲分述如下:
程式碼不須變動部份:
1.SignIn.html
2.SignIn.java
3.Session.java
4.SignOut.html
5.SignOut.java
程式碼有變動部份:
1.Application.java:此部份的程式碼有著最大的改變,因為要將權限的設定改為使用Annotation,所以不需如前面二個範例將授權策略實作(IAuthorizationStrategy)。
package com.myapp.wicket; import org.apache.wicket.Session; import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession; import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.request.Request; import org.apache.wicket.request.Response; public class Application extends AuthenticatedWebApplication { public Application() { } @Override public Class getHomePage() { return Home.class; } @Override protected Class<? extends AbstractAuthenticatedWebSession> getWebSessionClass() { return mysession.class; } @Override public Session newSession(Request request, Response response) { //回傳自訂的Session類別 return new mysession(request); } @Override protected Class<? extends WebPage> getSignInPageClass() { //回傳登入頁面 return SignIn.class; } @Override protected void init(){ super.init(); //設定字元集 getMarkupSettings().setDefaultMarkupEncoding("UTF-8"); //原本以下必須實IAuthorizationStrategy,但是改用Annotation後就不需要了 } }
2.Home.html:此頁面變成所有使用者都可以進入,亦即沒有權限的限制,因此修改了部份的內容。
<wicket:extend> <h2>Welcome!</h2> <p> 此頁是共同頁面,每個人都可以進入 </p> <p> <wicket:link><a href="AdminPage.html">管理者頁面</a></wicket:link><br/> <wicket:link><a href="SignOut.html">登出</a></wicket:link> </p> </wicket:extend>
3.Home.java:將建構子的內容全部清除。
4.AdminPage.html:此頁面是前面二個範例所沒有的,主要是受限的頁面,只有管理員才能進入。
<wicket:extend xmlns:wicket="http://wicket.apache.org"> <h2>Welcome ADMIN!</h2> <p> 系統管理員才能看到此頁面 </p> <p> <wicket:link><a href="Home.html">首頁</a></wicket:link><br/> <wicket:link><a href="SignOut.html">登出</a></wicket:link> </p> </wicket:extend>
5.AdminPage.java:這裡的主要重點在於使用Annotation來描述此頁面的授權,也因此要匯入org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation。
package com.myapp.wicket; import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation; import org.apache.wicket.request.mapper.parameter.PageParameters; /** * * @author Hsiao Shengche */ //加入Annotation,表示只有ADMIN才能看到 @AuthorizeInstantiation("ADMIN") public final class AdminPage extends BasePage { public AdminPage() { super (); } public AdminPage(PageParameters params) { //TODO: process page parameters } }
No comments:
Post a Comment