1

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

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

例如人力资源经理 -> 员工/索引,客户经理 -> 客户/索引。

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

更新问题的信息

这是排名 tbl 在此处输入图像描述

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

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

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

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

人力资源经理和客户经理登录的相应访问规则在哪里hrManager以及在哪里。accountManager这将检查用户是否具有“人力资源经理”级别的访问权限,如果有则将其重定向到那里,然后检查用户是否具有“客户经理”级别的访问权限,如果有则将他们重定向到该页面。

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

编辑:

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

另一种方法是在登录后将用户排名加载到 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"));
}
于 2012-08-24T07:04:11.183 回答
3

$this->redirect(array("controller/admin"));什么?

于 2012-08-24T06:52:53.843 回答