yii2安装教程:http://pandaju.me/article/177
环境yii-advanced-app-2.0.6,yii2-admin-2.2yii2admin自带一个用户表user
把user表作为前端用户表,新增后台管理员表admin,表结构和user表一样
backend\config\main.php配置
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-backend',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'backend\controllers',
'bootstrap' => ['log'],
'aliases' => [
'@mdm/admin' => '@vendor/mdmsoft/yii2-admin-2.2',
],
'modules' => [
'admin' => [
'class' => 'mdm\admin\Module',
'layout' => 'left-menu',
'controllerMap' => [
'assignment' => [
'class' => 'mdm\admin\controllers\AssignmentController',
//'userClassName' => 'common\models\User',
'userClassName' => 'backend\models\Admin',
'idField' => 'id'
]
],
'menus' => [
'assignment' => [
'label' => 'Grand Access' // change label
],
//'route' => null, // disable menu route
]
],
'debug' => [
'class' => 'yii\debug\Module',
],
],
'components' => [
// 'user' => [//前台用户组件,后台用不到
// 'identityClass' => 'common\models\User',
// 'enableAutoLogin' => true,
// ],
'admin' => [
//管理员
'class' => '\yii\web\User',
'loginUrl' => array('/site/login'),//没有登录就跳转到
'idParam' => '_aId',
'identityCookie' => ['name'=>'_aa','httpOnly' => true],
'identityClass' => 'backend\models\Admin',
'enableAutoLogin' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'assetManager' => [
'basePath' => '@webroot/backend/web/assets',
'baseUrl' => '@web/backend/web/assets'
],
//rdbc
'authManager' => [
'class' => 'yii\rbac\DbManager',
//'defaultRoles' => ['guest'],
],
],
//yii2admin默认访问控制
'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [//允许访问
'site/*',
'admin/*',
// 'some-controller/some-action',
]
],
'params' => $params,
];
复制common/models目录下的LoginForm.php和User.php到backend/models目录下
改成Admin.php和AdminLoginForm.phpAdmin.php文件修改部分
namespace backend\models;
class Admin extends ActiveRecord implements IdentityInterface
public static function tableName()
{
return '{{%admin}}';
}
AdminLoginForm.php文件修改部分
namespace backend\models;
class AdminLoginForm extends Model
//return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
return Yii::$app->admin->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
//$this->_user = User::findByUsername($this->username);
$this->_user = Admin::findByUsername($this->username);
AssignmentController.php\AssignmentController.php里面
//$this->userClassName = Yii::$app->getUser()->identityClass;
//$this->userClassName = $this->userClassName ? : 'common\models\User';
改成
$this->userClassName = Yii::$app->getAdmin()->identityClass;
$this->userClassName = $this->userClassName ? : 'backend\models\Admin';
backend\controllers\SiteController.php文件修改部分
//use common\models\LoginForm;
use backend\models\AdminLoginForm;
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),//yii\filters\AccessControl访问验证类
'user' => 'admin',//默认是验证user组件的,这里改为admin组件
'rules' => [//AccessControl类的rules属性,用于定义访问规则
[
'actions' => ['login', 'error'],
'allow' => true,
],
[//允许未登录的操作
'actions' => ['logout', 'index','captcha'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
//'logout' => ['post'],//必须post方式提交
],
],
];
}
//登录
public function actionLogin()
{
//if (!\Yii::$app->user->isGuest)
if (!\Yii::$app->admin->isGuest)
{
return $this->goHome();
}
//$model = new LoginForm();//common\models\LoginForm
$model = new AdminLoginForm();//管理员登录表单
$post = Yii::$app->request->post();
if($post)
{
if ($model->load($post) && $model->login())
{
//登录成功
}
else
{
//登录失败
}
}
//$this->layout = false; //不使用布局
return $this->render('login', [
'model' => $model,
]);
}
public function actionLogout()
{
//Yii::$app->user->logout();
Yii::$app->admin->logout();
return $this->goHome();
}
mdmsoft\yii2-admin-2.2\views\layouts\main.php里面
'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id),
改成
'items' => MenuHelper::getAssignedMenu(Yii::$app->admin->id),
mdmsoft\yii2-admin-2.2\components\AccessControl.php里面
//private $_user = 'user';
private $_user = 'admin';
backend\views\site\login.php文件里面
登录表单字段的name由LoginForm[字段名]改成AdminLoginForm[字段名]<input type="text" class="ipt" size="10" id="username" name="AdminLoginForm[username]" value="admin" />
<input type="password" class="ipt" name="AdminLoginForm[password]" value="123456" />
现在可以先登录管理员再使用http://你的域名/admin.php?r=admin 来访问yii2-admin了