在使用tp做后台的时候,不允许未登录用户访问后台页面,是通过新建一个 BaseController,而后在其 init 方法中校验 session 中是否存储了会员的信息,而未有信息的视为未登录,跳转到登录页面。

相信有一些人在yii中实现授权的时候也会延续此方法。

而在yii2中,有自带的 ACF 可以实现此功能。

Yii2 ACF

https://www.yiichina.com/doc/guide/2.0/security-authorization

BaseController

  1. <?php
  2. class BaseController extends Controller
  3. {
  4. /**
  5. * {@inheritdoc}
  6. */
  7. public function behaviors()
  8. {
  9. return [
  10. 'access' => [
  11. 'class' => AccessControl::className(),
  12. 'rules' => [
  13. [
  14. 'allow' => true,
  15. 'roles' => ['@'],
  16. ]
  17. ],
  18. ]
  19. ];
  20. }
  21. }

BaseController 实现了控制权限的基类。

ACF简介

  • roles:匹配用户的类型

    • @ 代表已登录的用户
    • ? 代表未登录的用户
    • 空或者没有roles 代表所有的用户(也就是登录和未登录的用户都会被匹配)
  • allow:指的该规则是允许还是拒绝

    • true 允许
    • false 拒绝
  • actions:被作用的action

    • 没有此项,代表作用于所有的action

结合以上三点,所有的action都需要用户登录,就可以实现了tp的那种BaseController授权控制。