我在Yii2应用程序中使用用户模块amnah/yii2-user。我需要为用户模块禁用一些操作。
例如,如何禁用用户注册(/ user / register)。
答案 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;您的申请中的链接。更新包可能会破坏您的解决方法并使注册成为可能(例如通过更改操作名称或引入不同的注册方式)。
最佳解决方案是为模块包提供帮助并添加设置以禁用注册。然后你的用例将得到官方支持 - 升级没有再次添加此功能的风险,你也不会浪费时间来维护你的分支。