Php yii:如何在登录后重定向到不同的页面?

Php yii:如何在登录后重定向到不同的页面?,php,yii,yii-extensions,Php,Yii,Yii Extensions,Q:登录后如何重定向到不同的页面 状态:我有自定义用户角色,我想为不同的用户重定向到不同的页面 e、 g人力资源经理->员工/索引,客户经理->账户/索引 我正在使用yii 1.1.xx和权限模块。yii和权利模块将与绿色一起使用 更新问题的信息 这是等级tbl 这是用户tbl 如果排名是Account Manager,则网站将重定向到Account/index 如果级别为人力资源经理,网站将重定向到员工/索引。类似于$this->redirectarraycontroller/admin

Q:登录后如何重定向到不同的页面

状态:我有自定义用户角色,我想为不同的用户重定向到不同的页面

e、 g人力资源经理->员工/索引,客户经理->账户/索引

我正在使用yii 1.1.xx和权限模块。yii和权利模块将与绿色一起使用

更新问题的信息

这是等级tbl

这是用户tbl

如果排名是Account Manager,则网站将重定向到Account/index

如果级别为人力资源经理,网站将重定向到员工/索引。

类似于$this->redirectarraycontroller/admin

类似于$this->redirectarraycontroller/admin

其中,hrManager和accountManager是HR经理和Account Manager登录的相应访问规则。这将检查用户是否具有“HR Manager”级别的访问权限,如果是,则将其重定向到该页面,然后检查用户是否具有“Account Manager”级别的访问权限,如果是,则将其重定向到该页面

显然,你可以定制它如何适合你的应用程序,因为如果用户既没有人力资源经理也没有客户经理访问权限,上面的代码将不会重定向到任何地方,因此你需要另一个catcher

编辑:

hrManager字符串是rbac authitem名称,您有AUTHASSIGN表吗 是否为rbac设置了authitem和authitemchild

如果没有,您可以使用排名表使用稍微不同的方法。您可以使用rank_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"));
}
另一种方法是在登录后将用户排名加载到Yii::app->user参数中,这样您就不必在重定向之前加载用户模型,也许您已经设置好了,但是您正在授予对页面的访问权限

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"));
}
其中,hrManager和accountManager是HR经理和Account Manager登录的相应访问规则。这将检查用户是否具有“HR Manager”级别的访问权限,如果是,则将其重定向到该页面,然后检查用户是否具有“Account Manager”级别的访问权限,如果是,则将其重定向到该页面

显然,你可以定制它如何适合你的应用程序,因为如果用户既没有人力资源经理也没有客户经理访问权限,上面的代码将不会重定向到任何地方,因此你需要另一个catcher

编辑:

hrManager字符串是rbac authitem名称,您有AUTHASSIGN表吗 是否为rbac设置了authitem和authitemchild

如果没有,您可以使用排名表使用稍微不同的方法。您可以使用rank_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"));
}
另一种方法是在登录后将用户排名加载到Yii::app->user参数中,这样您就不必在重定向之前加载用户模型,也许您已经设置好了,但是您正在授予对页面的访问权限

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"));
}

是的,我知道如何重定向。但我不知道如何根据用户角色重定向。e、 g人力资源经理rolerank登录用户后,页面将重定向到员工/索引页面。是的,我知道如何重定向。但我不知道如何根据用户角色重定向。e、 g人力资源经理rolerank登录用户后,页面将重定向到员工/索引页面。我更新了我的问题。请看。“人力资源经理”是否是控制员的行为?我想用排名进行验证并重定向“按排名指定页面”。@tharsoe,我已经用一些可能有用的详细信息更新了答案,具体取决于你的应用程序的设置方式。具体取决于你想如何使用它。如果您阻止某个特定页面被给定的用户组查看,您可以将其放在要隐藏的控制器操作的开头。否。。。我指的是问题主题。我希望用户登录后被重定向到不同的页面。插入此代码的正确位置在哪里?登录信息,CWebUser。。用户身份?哪里?您的站点控制器中是否有actionLogin方法,您可以在检测到有效登录后添加重定向,例如;如果$model->validate&&$model->login{//code here}我更新了我的问题。请看。“人力资源经理”是否是控制员的行为?我想用排名进行验证并重定向“按排名指定页面”。@tharsoe,我已经用一些可能有用的详细信息更新了答案,具体取决于你的应用程序的设置方式。具体取决于你想如何使用它。如果您阻止某个特定页面被给定的用户组查看,您可以将其放在要隐藏的控制器操作的开头。否。。。我指的是问题主题。我希望用户登录后被重定向到不同的页面。插入此代码的正确位置在哪里?登录信息,CWebUser。。用户身份?哪里?您的站点控制器中是否有actionLogin方法,您可以添加redirec t在检测到有效登录后,例如;如果$model->validate&&$model->login{//code here}