-- 體驗範例程式 --
本範例程式和先前範例程式相比,程式碼變得更為簡潔,而且需要修改的部份不多,茲分述如下:
程式碼不須變動部份:
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