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;

可以正常顯示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM