Yii2禁用amnah / yii2-user

时间:2018-05-22 09:04:10

标签: yii2

我在Yii2应用程序中使用用户模块amnah/yii2-user。我需要为用户模块禁用一些操作。

例如,如何禁用用户注册(/ user / register)。

2 个答案:

答案 0 :(得分:2)

遗憾的是,您正在使用的用户模块没有任何选项可以通过dektrium/yii2-user等配置禁用用户注册。

您需要创建一个控制器并扩展DefaultController.php,并覆盖下面的操作。

<?php

namespace app\controllers;
use amnah\yii2\user\controllers\DefaultController as BaseDefault;

class DefaultController extends BaseDefault{
    public function actionRegister()
    {
        return $this->redirect(["/user/login"]);
    }
}

请勿忘记首先映射您的控制器以覆盖操作

'modules' => [
    'user' => [
        'class' => 'app\modules\MyModule',
        'controllerMap' => [
            'default' => 'app\controllers\DefaultController',
        ],
    ],
],

答案 1 :(得分:1)

除了 @Muhammad 之外的答案 - 替换单个控制器可能会在一些简单的情况下工作,但通常只处理这种情况(从大模块中删除核心功能)的唯一理智方法是fork包并直接在其源代码中进行必要的更改。

即使您覆盖注册操作并重定向到登录页面,您仍可能会有多次混淆&#34;点击此处注册&#34;您的申请中的链接。更新包可能会破坏您的解决方法并使注册成为可能(例如通过更改操作名称或引入不同的注册方式)。

最佳解决方案是为模块包提供帮助并添加设置以禁用注册。然后你的用例将得到官方支持 - 升级没有再次添加此功能的风险,你也不会浪费时间来维护你的分支。

相关问题