首页 > 代码库 > Yii2前后台分离
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前后台分离