yii2.0权限控制 ACF权限--登录验证
admin
2023-01-19 12:01:15
0

ACF是一种通过yii\filters\AccessControl类来实现的简单授权

一般在控制器中我们调用如下:
打开backend\controller\SiteController.php 我们看到这样一段代码

public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'actions' => ['logout', 'index'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}

几个必须到配置:
1、配置验证类User

'user' => [
'identityClass' => 'common\models\Usermember',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
'loginUrl'=>'/public/login'
],

2、继承IdentityInterface接口
一般来说,从数据库查找数据,只需要继承AR类即可,但是,我们这个是用户登录模型,核心是验证,所以自然需要实现核心的验证功能,就像LoginForm模型提到的validatePassword一样,实际的验证逻辑是在当前的User模型完成的。一般来说,实现IdentityInterface接口,需要实现以下方法:

public static function findIdentity($id); //①

public static function findIdentityByAccessToken($token, $type = null);   //②

public function getId();    //③

public function getAuthKey();   //④

public function validateAuthKey($authKey);    //⑤

3、登录到login()做相关调用验证:

public function login()
{
if ($this->validate()) {
if($this->rememberMe)
{
$this->_user->generateAuthKey();//③
}
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 36002430 : 0);
}
return false;
}

4、对用到控制器类做配置

/**

  • {@inheritdoc}
    */
    public function behaviors()
    {
    return [
    'access' => [
    'class' => AccessControl::className(),
    'only' => ['userhome', 'signup'],
    'rules' => [
    [
    'actions' => ['','signup'],
    'allow' => true,
    'roles' => ['?'],
    ],
    [
    'actions' => ['userhome'],
    'allow' => true,
    'roles' => ['@'],
    ],
    ],
    ],
    'verbs' => [
    'class' => VerbFilter::className(),
    'actions' => [
    'logout' => ['post'],
    ],
    ],
    ];
    }

相关内容

热门资讯

全国人大代表雷军:京津冀联建国... 新京报讯(记者曹晶瑞)“以科技创新加快引领新质生产力,是时代赋予我们这代人的使命,民营企业更要敢为人...
特朗普说结束伊朗战争后“古巴只... 特朗普3月5号下午说,结束伊朗战争之后,古巴只是时间问题,他此番表态背后真实目的又是什么?对此,国际...
realme暂停新机研发?官方... PChome 3月7日消息,一则 “realme疑似暂停2026年全新手机产品研发” 的消息在微博快...
对话高通执行副总裁:很快发布X... 智东西 作者 | ZeR0 编辑 | 漠影 智东西3月6日报道,在MWC 2026期间,高通执行副总...
2026年网络准入控制系统最新... 老吴的科技公司刚熬过业务扩张期,就栽了个大跟头。 上周一上班,全公司内网突然瘫痪,核心业务系统无法登...
张凯丽委员:禁止未成年用网的封... 3月5日上午9时,十四届全国人大四次会议在人民大会堂开幕,国务院总理李强作政府工作报告,其中提到“加...
诚信氧舱工厂十大排行:哪家口碑... 在特种医疗设备领域,氧舱类产品的技术门槛与安全性要求极高。根据IDC 2023年发布的医疗设备智能化...
三部法律案提请审议,标注中国立... 新华社北京3月7日电 题:三部法律案提请审议,标注中国立法新刻度新华社记者刘硕、齐雷杰立法,关乎国家...
媒体:不理旧账,不配为官 作者:何涛3月6日上午,十四届全国人大四次会议辽宁省代表团举行全体会议,并向中外媒体开放。会上,辽宁...
伊朗称做好长期作战的准备,专家... 伊朗伊斯兰革命卫队称已做好长期战争的准备,新型武器正在研发中,尚未大规模使用。伊朗外长也表示做好应对...