正しく質問できれば、基本的に、コントローラー内の特定のアクションへのアクセスを、ログインせずにアクセスできないようにしようとしているのですか?
これが目的の場合、正しい方法は次のとおりです。
actionMethod()
次のようにコントローラーでaを作成します。
class SomeController extends CController{
public function actionSomeAction(){
... More code...
}
その後、以下を使用してサイトにアクセスできます: path/to/application/controllerName/actionName
- アクションにアクセスする前にユーザーに強制的にログインさせたい場合は、次のようにします。
次のようにアクセス制御を行います。
/**
* @return array action filters
*/
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions' => array('**yourActionMethodName**'),
'users' => array('@'),
),
array('deny', // deny all users
'users' => array('*'),
),
);
}
これで、認証されたユーザーのみが URL にアクセスできるようになります。
問題が解決したことを願っています。
If you simply want to check if the user is a guest and if he is, send him to the login page everytime:
config/main.php で、次を追加します。
'defaultController' => 'controllerName/actionMethod',
そして、そのコントローラに上記のアクセス ルールを追加するだけです。現在、デフォルトでは、アクセス制御された方法でサイトを開いています。そのため、自動的にログイン ページにリダイレクトされます。
Even another method
:
これをviews/layouts/main.phpに追加するだけです
<?php
if(Yii::app()->user->isGuest)
{
$this->redirect('/site/login');
}
?>