【问题标题】:Q: Yii2 integrating Rbac and button discriminationQ:Yii2 集成了 Rbac 和按键识别
【发布时间】:2019-03-15 15:07:45
【问题描述】:

我正在使用 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>

站点控制器:

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,
    ]);
}

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

【问题讨论】:

  • 按钮注册有用吗?你有 actionRegister 吗?
  • 按钮注册不起作用,它与登录按钮相同。我没有 actionRegister,只有你看到的 actionLogin。
  • 最好使用 Yii::$app->request->post() 并且你有 2 个按钮提交同一个表单?不是个好主意。

标签: php yii2 rbac


【解决方案1】:

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

首先,RBAC。

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

二、按钮

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多