Wednesday, June 6, 2012

Apache Wicket Auth/Roles 簡介 -- Authentication (2)

接續上一篇文章,本文的範例則是使用Auth/Roles套件中內建的SignInPanel,來呈現登入畫面,同時它亦可設定是否要將登入資訊儲存在cookie中。

-- 體驗範例程式 --



本範例大部份程式碼都和上一篇相同,只有一小部份有稍加修改,茲表列如下:

相同的部份:
1.Application.java
2.SignOut.html
3.SignOut.java

有修改的部份:

1.Session.java:將getRoles()改成回傳Role.ADMIN的角色。

@Override
    public Roles getRoles() {
        //如果驗證成功則給予ADMIN的角色名
        if (isSignedIn()) {
            return new Roles(Roles.ADMIN);
        }
        return null;
    }


2.SignIn.html:將之前自訂的登入表單全部移除,因為使用內建的SignInPanel可使用任何tag(在此範例是使用span)。

<wicket:extend>
            <p>
                <i>Username and password are both "wicket"</i>
            </p>
            <span wicket:id="signInPanel"/>
        </wicket:extend>

3.SignIn.java:最大的修正是將自訂Form的部份移除,並且使用內建的SignInPanel。

package com.myapp.wicket;

import org.apache.wicket.authroles.authentication.panel.SignInPanel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

/**
 *
 * @author Hsiao Shengche
 */
public final class SignIn extends BasePage {

    //將傳入的PageParameters指定為null
    //意即一定要出現登入畫面(若沒有登入的話)
    public SignIn() {
        this(null);
    }

    public SignIn(PageParameters params) {
        //使用SignInPanel
        //org.apache.wicket.authroles.authentication.panel.SignInPanel
        //可以使用記憶功能(會出現checkbox)
        add(new SignInPanel("signInPanel", true));
    }

}

No comments:

Post a Comment