0

Yiiフレームワークを使用してアプリケーションレベルでセッションがnullの場合、ログインページにリダイレクトしたい。ログインページを除くすべてのページに適用できます。感謝するのに役立ちます

4

1 に答える 1

1

これを行う最良の方法は、Controller基本クラス(protected / components / Controller.php)を変更することです。init()次のように、すべてのController呼び出しで実行される関数を追加できます。

public function init(){
    if(!isset($_SESSION['mysession'])){
        this->redirect("site/login");
    }
}

次の方法で現在のコントローラーにアクセスできます。

Yii::app()->controller->id 

ただし、init関数でアクションにアクセスすることはできません(通常はを使用できますYii::app()->controller->action->id)。これを行う最も簡単な方法は、おそらく次のようなURLを確認することです。

if ($_SERVER['REQUEST_URI'] == "/site/login"){
    // it's the login page
}

$_SERVER['REQUEST_URI']サブフォルダ内のローカルホストで作業している場合は、比較する前に次のように編集する必要がある場合があります。

$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);

そして、それと比較してください。また、文字列内のindex.phpも確認するのがおそらく最善です。

ログインしていないユーザーが特定のページにアクセスできないようにするためにこれを使用していると思いますか?その場合は、実際にを使用する必要がありますaccessRules詳しくはこちらをご覧ください

于 2012-12-16T13:25:40.847 に答える