我正在我的Yii2应用程序中使用用户模块Yii2。我需要禁用用户模块的一些操作。
例如,如何禁用用户注册(/ user /寄存器)。
发布于 2018-05-22 20:19:02
不幸的是,您使用的用户模块没有任何选项可以通过像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',
],
],
],发布于 2018-05-26 19:44:27
除了@Muhammad答案--替换单个控制器在一些简单的情况下可能有效,但通常处理这种情况的唯一明智方法(从大模块中删除核心功能)是分叉包,并在源代码中直接进行必要的更改。
即使您覆盖注册操作并重定向到登录页面,您仍可能在应用程序中有多个令人困惑的“单击此处注册”链接。更新包可能会破坏您的解决方案,并使注册成为可能(例如,通过更改操作名称或引入不同的注册方式)。
最好的解决方案是帮助模块包和添加设置来禁用注册。然后您的用例将得到官方支持-没有风险升级将再次添加此功能,您将不会浪费时间来维护您的叉子。
https://stackoverflow.com/questions/50463768
复制相似问题