共计 1566 个字符,预计需要花费 4 分钟才能阅读完成。
首先配置文件新增一组,copy user 组件即可 属性可调整
'components' => [
// 其余...
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'admin' => [
'class' => 'yii\web\User',
'identityClass' => 'app\admin\models\Admin',
'enableAutoLogin' => true,
'loginUrl' => 'admin/default/xxx',//admin 的登录页
'identityCookie' => ['name' => '_admin_identity', 'httpOnly' => true],
// 这 5 个我的项目必须配置 否则会和 user 登录状态发生冲突
'idParam' => '__admin_id',
'authKeyParam' => '__admin_authKey',
'authTimeoutParam' => '__admin_expire',
'absoluteAuthTimeoutParam' => '__admin_absoluteExpire',
'returnUrlParam' => '__admin_returnUrl',
],
在控制器,假如咱们减少了一个 admin 模块
<?php
namespace app\admin\controllers;
use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
class DefaultController extends Controller
{public function behaviors()
{
return [
'access' => ['class' => AccessControl::className(),
/*
* 这里的 user 必须要指定 components 里的后盾用户组组件名称 admin
* 否则默认会判断前台用户组 user
* 如果你取了其余名字就填写你自定义的名字
*/
'user' => 'admin',
'only' => ['index', 'signup'],
'rules' => [
[// 不须要登录就能够拜访的办法
'allow' => true,
'actions' => ['login', 'signup'],
'roles' => ['?'],
],
[// 必须登录才能够拜访的办法
'allow' => true,
'actions' => ['index'],
'roles' => ['@'],
],
],
],
];
}
public function actionIndex()
{if( Yii::$app->admin->isGuest){return 'admin 没有登陆,如果设置了 AccessControl,其实压根拜访不到这里就会被重定向到管理员登陆界面';}
$identity = Yii::$app->admin->identity;
return 'Your username :' . $identity->username;
}
//admin 登录 实在业务代码会简单一些
public function actionLogin()
{$identity = \app\admin\models\Admin::findByUsername('demo');
return Yii::$app->admin->login($identity) ? 'admin 登陆胜利' : '登陆失败' ;
}
//admin 退出
public function actionLogout()
{return Yii::$app->admin->logout() ? 'admin 登出胜利' : '登出失败' ;
}
}
除了 admin,你也能够设定其余用户组件,比方供应商,商户须要独立用户表都能够用这种办法
正文完