小编Mik*_*son的帖子

Yii2 RBAC基于组的每个用户的多个分配

我的应用程序在技术上有两个区域,全局区域(反馈,用户配置文件,用户设置等)和组区域(联系人,项目,组配置文件,组设置等).

我正在使用RBAC DBManager作为全局区域,它工作正常,但我遇到了实现组区域授权机制的问题.

原因是组可以在用户之间共享,并且用户可以在group_access表(id,group_id,user_id,item_name)中具有多个分配,因为它们可以是多个组的成员,并且它们可以具有不同的权限级别.那些团体.

这是我的身份验证设置:

$auth = Yii::$app->authManager;

    // group permissions
    $manageGroupUsers = $auth->createPermission('manage_group_users');
    $manageGroupUsers->description = 'Manage Group Users';
    $auth->add($manageGroupUsers);

    $manageGroupSettings = $auth->createPermission('manage_group_settings');
    $manageGroupSettings->description = 'Manage Group Settings';
    $auth->add($manageGroupSettings);

    // app permissions
    $manageAppUsers = $auth->createPermission('manage_app_users');
    $manageAppUsers->description = 'Manage App Users';
    $auth->add($manageAppUsers);

    $manageAppGroups = $auth->createPermission('manage_app_groups');
    $manageAppGroups->description = 'Manage App Groups';
    $auth->add($manageAppGroups);

    $manageAppSettings = $auth->createPermission('manage_app_settings');
    $manageAppSettings->description = 'Manage App Settings';
    $auth->add($manageAppSettings);

    $manageAppFeedback = $auth->createPermission('manage_app_feedback');
    $manageAppFeedback->description = 'Manage App Feedback';
    $auth->add($manageAppFeedback);

    // group roles
    // -- create role
    $groupUser = $auth->createRole('group_user');
    $groupUser->description = …
Run Code Online (Sandbox Code Playgroud)

mysql rbac yii2

8
推荐指数
1
解决办法
2135
查看次数

Yii2和Pjax重定向无法在Internet Explorer中运行?

我使用框架Yii2与他们的Pjax实现.控制器代码添加了一个成功传递响应的标题"X-Pjax-Url".

Pjax的重定向通过pjax.js方法在Chrome,Safari和Firefox中处理得很好,但在IE11中失败了.

当我使用包含的调试器并查看响应头时,标头就在那里,并且url是正确的,但是IE11没有读取它.

响应错误: 在此输入图像描述

响应标头: 在此输入图像描述

有任何想法吗?

**2015年9月7日更新

控制器代码:

return $this->redirect(['secure/dashboard']);
Run Code Online (Sandbox Code Playgroud)

以下是有关如何使用此方法的文档(yii\web\Controller)的链接,该方法是此方法(yii\web\Response)方法的快捷方式.

再一次,这适用于Chrome,Safari和Firefox,而不是IE11.

我正在使用此代码段来验证xhr响应,该响应返回null.

// pjax complete
$(document).on('pjax:complete', function (event, xhr, textStatus, options) {
    alert(JSON.stringify(xhr));
    var url = xhr.getResponseHeader('X-Pjax-Url');
    if (url) {
        window.location = url;
    }
});
Run Code Online (Sandbox Code Playgroud)

在上面的图像中,您可以看到标题实际上正在发送,就好像IE正在正确读取它一样.

Pjax.js文件实际上处理重定向,我只是使用该代码段进行调试.

internet-explorer pjax yii2

7
推荐指数
1
解决办法
1420
查看次数

Yii2 Pjax和ActiveForm在重新加载后提交不工作?

我正在我的提交按钮上创建一个加载指示器,并使用registerJs函数将"start"过程附加到beforeSubmit事件.

它第一次正常工作,但在重新加载Pjax容器后,再次提交表单时不会触发事件.

我将整个视图文件放在Pjax容器中,以便正确显示flash消息.

这是main.php布局文件片段:

<?php Pjax::begin([
'id' => 'pjax-container',
'enablePushState' => false,
]); ?>

<?= Alert::widget(); ?>

<?= $content; ?>

<?php Pjax::end(); ?>
Run Code Online (Sandbox Code Playgroud)

这里是registerJs函数,位于main.php中:

<?php
$js = <<< 'SCRIPT'
$('#form').on('beforeSubmit', function(){
alert('Submitted...');
//$("#spinner").fadeIn();
});
SCRIPT;
$this->registerJs($js);
?>
Run Code Online (Sandbox Code Playgroud)

这是activeForm:

<?php $form = ActiveForm::begin(['id' => 'form', 'options' => ['data-pjax' => true]]); ?>

<?= $form->field($model, 'name')->textInput(['type' => 'text']) ?>

<?= $form->field($model, 'email')->textInput(['type' => 'email']) ?>

<?= $form->field($model, 'subject')->textInput(['type' => 'text']) ?>

<?php
echo $form->field($model, 'message')->textArea(['rows' => 6]);

echo $form->field($model, 'verify_code')->widget(Captcha::className(), [
        'captchaAction' => …
Run Code Online (Sandbox Code Playgroud)

javascript pjax yii2

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

yii2 ×3

pjax ×2

internet-explorer ×1

javascript ×1

mysql ×1

rbac ×1