利用yii2admin划分前后台

yii2安装教程:http://pandaju.me/article/177

环境yii-advanced-app-2.0.6,yii2-admin-2.2

yii2admin自带一个用户表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.php

Admin.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了





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值