1

Q:ログイン後に別のページにリダイレクトするにはどうすればよいですか?

ステータス:カスタムユーザーロールを使用していて、ユーザーごとに別のページにリダイレクトしたい。

例:人事マネージャー->従業員/インデックス、アカウントマネージャー->アカウント/インデックス。

私はyii1.1.xxとrightsモジュールを使用しています。yiiとrightsモジュールは緑で進んでいます。

質問の情報を更新する

これはランクtblです ここに画像の説明を入力してください

これはユーザーtblです ここに画像の説明を入力してください

ランクがアカウントマネージャーの場合、Webサイトはアカウント/インデックスにリダイレクトされます。

ランクが人事マネージャーの場合、Webサイトは従業員/インデックスにリダイレクトされます。

4

2 に答える 2

5
if(Yii::app()->user->checkAccess('hrManager',Yii::app()->user->getId())==1)
{
    $this->redirect(array("employee/index"));
} else if(Yii::app()->user->checkAccess('accountManager',Yii::app()->user->getId())==1) {
    $this->redirect(array("account/index"));
}

HRManagerhrManagerおよびaccountManagerAccountManagerログインに対応するアクセスルールはどこにありますか。これにより、ユーザーが「HRマネージャー」レベルのアクセス権を持っているかどうかを確認し、リダイレクトしている場合は、ユーザーが「アカウントマネージャー」レベルのアクセス権を持っているかどうかを確認します。

ユーザーがHRマネージャーとアカウントマネージャーのどちらにもアクセスできない場合、上記のコードはどこにもリダイレクトされないため、アプリに合わせてカスタマイズできることは明らかです。そのため、別のキャッチャーが必要になります。

編集:

hrManager文字列はrbacauthitem名です。テーブルがありauthassignment authitemauthitemchildrbac用に設定されていますか?

そうでない場合は、ランキングテーブルを使用して、この方法を少し異なる方法で使用できます。ランクIDを使用して設定することもできますが、ユーザーモデルをロードする必要があります(まだロードしていない場合)。これは、最も効率的な方法ではない可能性があります。

$user = User::model()->findbyPk(Yii::app()->user->getId());
if($user->rank_id==3)
{
    $this->redirect(array("employee/index"));
} else if($user->rank_id==2)) {
    $this->redirect(array("account/index"));
}

もう1つの方法は、ログイン後にユーザーランクをYii :: app()-> user paramにロードすることです。これにより、リダイレクトの前にユーザーモデルをロードする必要がなくなります。おそらく、これはすでに設定されています。ページへのアクセスを許可しますか?

if(Yii::app()->user->rank_id==3)
{
    $this->redirect(array("employee/index"));
} else if(Yii::app()->user->rank_id==2)) {
    $this->redirect(array("account/index"));
}
于 2012-08-24T07:04:11.183 に答える
3

のようなもの$this->redirect(array("controller/admin"));

于 2012-08-24T06:52:53.843 に答える