Yii2前后台分离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2前后台分离相关的知识,希望对你有一定的参考价值。

Yii2前后台都需要注册的时候会产生前后台登录一个另一个同步登录和退出,这是因为登录和退出之前的sitecontroller里面公用了common/model下面的LoginForm.php和user.php需要分开写:

1、将common/models/User.php在当前目录下copy一份,命名为Admin.php,修改类的名称为Admin

2、将common/models/LoginForm.php复制到backend/models/LoginForm.php

修改backend/models/LoginForm.php

namespace backend\models; 

use common\models\Admin;

...

...

  protected function getUser()

  {

      if ($this->_user === null) {

          $this->_user = Admin::findByUsername($this->username);

      } 

        return $this->_user;

  }

3、将common/models/LoginForm.php复制到frontend/models/LoginForm.php

修改frontend/models/LoginForm.php

namespace frontend\models;

use common\models\User;

 

4、删除common/models/LoginForm.php

 

5、修改backend/config/main.php

 

‘components‘ => [

        ‘user‘ => [

            ‘identityClass‘ => ‘common\models\Admin‘,

            ‘enableAutoLogin‘ => true,

        ],

        ...

]       

 

6、修改frontend/config/main.php

 

‘components‘ => [

        ‘user‘ => [

            ‘identityClass‘ => ‘common\models\User‘,

            ‘enableAutoLogin‘ => true,

        ],

        ...

]

 

7、修改控制器backend/controllers/SiteController.php

 

namespace backend\controllers;

 

use Yii;

use yii\web\Controller;

use yii\filters\VerbFilter;

use yii\filters\AccessControl;

use backend\models\LoginForm;

如果不行注意前后台同步调整

 

前台和后台公用一个session了,不同用户同登录退出(前台登录了用户,后台刷新自动登录对应的管理员了),这是公用session

在backend的config下面的main.php中

‘user‘ => [

            ‘identityClass‘ => ‘common\models\Admin‘,

            ‘enableAutoLogin‘ => true,

            ‘identityCookie‘ => [‘name‘ => ‘__Manage_identity‘, ‘httpOnly‘ => true],

            ‘idParam‘ => ‘__Manage‘,

 

同理加在frontend中

 

localhost:90/login/index的后台界面显示没有权限

在后台loginController中加

use backend\models\LoginForm;

可以正常显示

 

以上是关于Yii2前后台分离的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 前后台登陆退出分离登陆验证

Yii2 基础模板前后台登录分离

YII2.0实现前后台分离登录

是时候使用 Vue2 和 Yii2 进行前后端分离开发啦

Yii2 前台用户与后台用户分离

Yii2框架之旅