[[Ethna/memo]]
#setlinebreak(on)

認証は2つの機能から成り立ちます。

1つ目はページ表示前に認証状態をチェックし、未認証の場合は処理を中止して別ページ(ログインページなど)に遷移させるような機能。
2つ目はパスワードなどの判定と認証済み状態の生成(つまりログオン処理)およびログアウト処理です。

基本方針として、すべてのActionは認証が成功している状態でしか実行されないような構成にします。
しかし、パスワードの照合Actionは認証が成功していなくとも実行できる必要があります。
そのほか、ログオン前でも実行できるいくつかのActionは明示的に認証を省略できるように構成されるべきでしょう。
そのほか、ログオン前でも実行できるいくつかのActionは明示的に認証を省略できるように構成されるべきでしょう。それも説明します。

まず、デフォルトですべてのページで認証状態のチェックをし、未認証状態ではログイン画面に遷移するような仕組みを作成します。

app/(SampleProject)_ActionClass.php の authenticate() に、認証状態の確認処理を記述します。


 function authenticate()
 {
    //セッションが開始されていない場合は開始する。
    if( !$this->session->isStart() ) {
        $this->session->start();
    }
    // ログイン状態を確認し、未認証の場合はログイン画面に遷移
    // 単純ですが、sessionアレイのuserというハッシュが登録されていれば認証済みと見なしています。
    // もう少しちゃんと判定してもいいかもしれませんね。
    $user = $this->session->get('user');
    if(! is_array($user) )
    {
        return 'login';
    }
    return parent::authenticate();
 }

上記はすべてのAction実行前に処理されます。
未認証であることが判明した場合はlogin Viewに飛ばされます。
未認証であることが判明した場合は''login''ビューに飛ばされます。

上記の確認処理を外したいActionには以下のような記述を加えます。

 class Eiss_Action_Login extends Eiss_ActionClass
 {
 
 // 追加ここから
    function authenticate()  // authenticate関数を追加
    {
        return;              // なにもせずreturnする
    }
 // 追加ここまで
 
    /**
     *  preprocess of login Action.
     *
     *  @access public
     *  @return string    forward name(null: success.
     *                                false: in case you want to exit.)
     */
    function prepare()
    {
        return null;
    }

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS