在使用tp做后台的时候,不允许未登录用户访问后台页面,是通过新建一个 BaseController,而后在其 init 方法中校验 session 中是否存储了会员的信息,而未有信息的视为未登录,跳转到登录页面。
相信有一些人在yii中实现授权的时候也会延续此方法。
而在yii2中,有自带的 ACF 可以实现此功能。
Yii2 ACF
https://www.yiichina.com/doc/guide/2.0/security-authorization
BaseController
<?php
class BaseController extends Controller
{
/**
* {@inheritdoc}
*/
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
]
],
]
];
}
}
BaseController 实现了控制权限的基类。
ACF简介
roles:匹配用户的类型
- @ 代表已登录的用户
- ? 代表未登录的用户
- 空或者没有roles 代表所有的用户(也就是登录和未登录的用户都会被匹配)
allow:指的该规则是允许还是拒绝
- true 允许
- false 拒绝
actions:被作用的action
- 没有此项,代表作用于所有的action
结合以上三点,所有的action都需要用户登录,就可以实现了tp的那种BaseController授权控制。