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

Thu*_* Ra 1 php yii yii-extensions

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

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

例如,人力资源经理 - >员工/指数,客户经理 - >账户/指数.

我正在使用yii 1.1.xx和权限模块.yii和权利模块是绿色的.

更新问题的信息

这是等级tbl 在此输入图像描述

这是用户tbl 在此输入图像描述

如果排名是客户经理,则网站将重定向到帐户/索引.

如果排名是HR经理,则网站将重定向到员工/索引.

Stu*_*Stu 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"));
}
Run Code Online (Sandbox Code Playgroud)

其中hrManageraccountManager是人力资源经理和客户经理的登录相应的访问规则.这将检查用户是否具有"HR Manager"级别访问权限,如果是,则将其重定向到那里,然后检查用户是否具有"帐户管理员"级别访问权限,如果是,则将其重定向到该页面.

显然,您可以自定义它适合您的应用程序,因为如果用户既没有HR管理员也没有客户经理访问权限,上述代码将不会重定向,因此您需要另一个捕手.

编辑:

hrManager字符串是rbac authitem名称,您是否有表格authassignment authitemauthitemchild为您的rbac设置?

如果没有,您可以使用排名表稍微改变一下这种方法.您可以使用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"));
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是在登录后将用户排名加载到Yii :: app() - >用户参数中,这样您就不必在重定向之前加载用户模型,也许您已经设置了这个用户模型但是授予访问页面的权限?

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"));
}
Run Code Online (Sandbox Code Playgroud)