本文基于yii2 basic版本. 前后台访问控制分离,主要是配置分离,指明关联的数据表,并配置不同的cookie,session ID,防止前后台缓存混淆.
一. 配置信息
在app\config\web.php中增加针对后台管理员表的配置, 在components中配置如下:
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
'idParam' => '__user', //前后台用户的 session id 是一样, 因此要设置区分
'identityCookie' => ['name'=>'__user_identity','httpOnly' => true], //cookie id也是, 必须前后台区分
'loginUrl' => ['/member/auth'],
],
'admin' => [ //配置后台的 User组件
'class' => 'yii\web\User', //自定义User组件,这里必须要指定
'identityClass' => 'app\modules\models\Admin',
'enableAutoLogin' => true,
'identityCookie' => ['name'=>'__admin_identity','httpOnly' => true],
'idParam' => '__admin',
'loginUrl' => ['/admin/public/login'],
],
user为前台登录以及访问控制时使用的配置, admin为后台登陆以及访问控制使用的配置.
二. 在通用控制器中重写behaviors方法
前台: 在子控制器中重新声明 $mustLogin属性, 用户必须在登录之后才能访问这些动作.
后台: 在后台中需要注意的是必须指明user 为 admin ,这里的admin就是上面在配置文件中配置的admin, 如果不指明user则上面的配置信息不会生效.