gpt4 book ai didi

Yii2 - 基本应用模板中的模块登录

转载 作者:行者123 更新时间:2023-12-03 13:24:21 26 4
gpt4 key购买 nike

使用“基本”应用程序模板,设置与主站点登录分开的模块登录的正确方法是什么?

例如,我有一个需要登录的“管理员”模块。我还需要主站点的用户登录名。

我做了以下事情:

  • 已创建 admin使用 gii 的模块工具
  • 已创建 models admin 中的文件夹模块文件夹
  • 已放置 LoginForm.phpUser.php在这个文件夹中(也更新了这些文件中的命名空间声明)
  • 已添加 AccessControl modules\admin\controllers\DefaultController.php 的行为和登录/注销操作
  • 更新 config\web.php如下:
    'modules' => [
    'admin' => [
    'class' => 'app\modules\admin\Module',
    ],
    ],
  • 更新 app\modules\admin\Module.php如下:
    public function init()
    {
    parent::init();

    Yii::$app->set('user', [
    'class' => 'yii\web\User',
    'identityClass' => 'app\modules\admin\models\User',
    'enableAutoLogin' => true,
    'loginUrl' => ['admin/default/login'],
    ]);

    Yii::$app->set('session', [
    'class' => 'yii\web\Session',
    'name' => '_adminSessionId',
    ]);
    }

  • 我遇到的问题是,如果我在未登录时尝试访问管理页面,它会显示登录表单(这是正确的)。但是登录后,它只是将我重定向回主站点。它应该将我重定向到我试图访问的管理页面。

    DefaultController.php ,它具有以下(默认代码):
    if ($model->load(Yii::$app->request->post()) && $model->login())
    return $this->goBack();

    这样做的正确方法是什么,以便我可以为管理模块和主站点进行独立登录?我不想使用“高级应用程序模板”,因为这会增加一些不必要的复杂性。

    最佳答案

    最好的方法是在管理模块中创建新的 Controller ,它应该有登录、注销操作。 因为,将来您可能会添加一些额外的逻辑。

    在该登录操作中,您可以使用相同的 LoginForm。

    您可以在该登录操作中指定重定向 url。

    管理模块类可以看起来像这样:

    namespace app\modules\admin;

    class Module extends \yii\base\Module
    {
    public $layout = 'main';

    public $defaultRoute = 'main/index';

    public function init()
    {
    parent::init();

    Yii::$app->errorHandler->errorAction = '/admin/main/error';
    Yii::$app->user->loginUrl = '/admin/main/login';
    .....

    }
    }

    关于Yii2 - 基本应用模板中的模块登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460605/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com