Yii2.0前后台登录分离

来源:互联网 发布:python hmmlearn库 编辑:程序博客网 时间:2024/06/09 02:06

LZ分析前后台[登录]三种情况

A、共用一个验证体系和一个数据表。

B、两个验证体系和共用一个数据表。

C、两个验证体系和两个数据表。

yii2.0高级版里面默认是A类型,即数据表一样,前台frontend登录/登出了,后台backend也同样登录/登出

我们这里讲述的是C类型


一、创建前后台登录数据表

安装yii2.0后目录下common/console/migrations默认拥有迁移的类(可创建user表)

鄙视创建后台用户表admin

1、使用如下命令来创建一个新的迁移(创建后台用户表admin):

yii migrate/create admin

【说明】common/console/migrations下生成一个新的迁移类(后缀为_admin.php)

【注意】也可直接复制common/console/migrations下的_init.php文件修改名称后缀为为_admin.php

参考已拥有的迁移类_init.php设置方法参数,注意修改表名{{%admin}}


2、使用如下命令来提交所有新的迁移

yii migrate
【说明】执行命令后数据库生成如下

生成admin、user表后,我们就需要将前台登录和后台登陆彻底分开了

二、分离前后台登录

1、frontend前台修改

首先---->把公用的common/models中的User.php和LoginForm.php移动到frontend/models中去
然后---->将这两个文件的命名空间改为以frontend开头,
最后---->将整个前台文件看一遍,把所有涉及到这两个common文件命名空间的需要都改为前台自己的命名空间。

2、backend后台修改

首先---->把公用的common/models中的User.php和LoginForm.php移动到backend/models中去[注意:修改User.php为Admin.php,类内的名称对应修改]
然后---->将这两个文件的命名空间改为以backend开头,
最后---->将整个后台文件看一遍,把所有涉及到这两个common文件命名空间的需要都改为后台自己的命名空间。
【注意修改对应的类名,表名】
backend/models/Admin中


bakcend/models/LoginForm.php中


[说明]
a、前后台修改完成后,可删除common内的LoginForm.php 、User.php
b、由于后台没有注册,可以前台注册一个用户名,复制到admin表中,当然LZ是为了快速方便完成前后台分离,您也可以自己编写一个后台注册页面,(后台是超级管理员,一般外部人员不允许注册的)
c、现在前后台都能按照自己数据库里的数据来登录了,但是由于session等验证公用一个,所以还是退出时,前后台一起退出
下面我们进行进一步的配置

三、前后台登录退出【配置】

1、前台,在frontend/config/main.php或者main-local.php中
$config = [    'components' => [        'user' => [            'identityClass' => 'frontend\models\User',            'enableAutoLogin' => true,            'identityCookie' => [                'name' => '_frontendUser', // unique for frontend            ]        ],        'session' => [            'name' => 'PHPFRONTSESSID',            'savePath' => sys_get_temp_dir(),        ],        'request' => [            'cookieValidationKey' => '8rqO22WJ9yiAx_KuJ8SFnbKctqGDWi9J',  //随机字符串            'csrfParam' => '_frontendCSRF',        ],    ],];
2、后台,在backend/config/main.php或者main-local.php中【图示详解】


【注意】:前后台配置参数大体相同
【说明】这里是LZ在另一位lz看到的一段话,送给各位【可能有些强迫症患者想同Yii1那样用Yii::$app->admin->id来访问后台用户id,这个不太好实现,Yii2和Yii1相比,用户验证这块改动比较大,web/User在Yii2框架中作为核心组件,如果要修改的话可能还要关联修改web/Application中的变量方法等,个人感觉没必要。】,如果您有兴趣,可以试试
至此,前后台分离登录,互相不受影响奋斗