问:Yii2整合了Rbac和按钮识别功能

时间:2018-10-10 16:19:19

标签: php yii2 rbac

我正在使用Yii2在php中开发一个网站,但我对Rbac问题有疑问。我遵循了官方指南,运行了迁移,现在在数据库中有四个默认表,它们定义了我的角色和权限。现在,我不知道如何将这些角色集成到我的项目中,我的意思是我只想让某些视图仅对具有特定权限的用户可见,但不了解实现此视图的方式。

我在登录时也遇到了问题,我不知道如何区分按钮单击。

登录(查看):

<div class="form-group">
    <div class="col-lg-offset-1 col-lg-11">
        <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button', 'value' => 'login']) ?>
        <?= Html::submitButton('Register', ['class' => 'btn btn-primary', 'name' => 'register-button', 'value' => 'register']) ?>
    </div>
</div>

SiteController:

public function actionLogin()
{
    if (!Yii::$app->user->isGuest) {
        return $this->goHome();
    }

    $model = new LoginForm();
    if (isset($_POST['submit']) && $_POST['submit']=='login') {
        return $this->goBack();
    }
    if (isset($_POST['submit']) && $_POST['submit']=='register') {

        return $this->render('register');
    }
    return $this->render('login', [
        'model' => $model,
    ]);
}

我只需要在右键单击后以不同的视图呈现用户。如果单击“登录”按钮,我想在登录视图中重定向,如果单击“注册”按钮,我想在注册视图中重定向。

1 个答案:

答案 0 :(得分:0)

这似乎是一个二合一的问题。

首先,RBAC。

docs中对此进行了很好的解释。您可以使用AccessControl仅允许角色或权限访问某些操作。如果您需要基于角色或权限在视图中显示某些内容,请使用if(Yii::$app->user->can('permission_or_role)) echo "I can";docs)。

第二,按钮

选中this链接,按钮的名称必须是您在控制器中检查的名称(而不是login-button / register-button并选中submit)。