Skip to content

DiscuzXController — Discuz!X 认证控制器基类

  • 文件位置: kernel/Platform/DiscuzX/Foundation/DiscuzXController.php
  • 命名空间: kernel\Platform\DiscuzX\Foundation
  • 继承: extends AuthControllerextends Controller
  • 是否可继承: 是(DiscuzX 插件控制器基类)

Discuz!X 场景下的认证控制器基类,在 AuthController 基础上提供 Discuz!X 的 formhash(表单防伪哈希)校验能力。

属性

可见性名称类型默认值说明
public$Formhashboolfalse是否启用 formhash 校验

继承属性

继承自 Controller$request$response 等(详见 ControllerAuthController)。

方法

verifyFormhash — 校验 formhash(final)

php
final public function verifyFormhash()

校验请求中的 Discuz!X formhash

逻辑

  1. self::$FormhashtrueFORMHASH 常量未定义,则 define("FORMHASH", 1)
  2. 校验 $this->request->query->get("formhash")$this->request->body->get("formhash") 是否等于 FORMHASH;不匹配则抛 Exception("非法访问", 403, 403, "formhash")

self::$Formhash 为静态继承访问,子类可将自身的 $Formhash 置为 true 以启用校验。

使用

php
use kernel\Platform\DiscuzX\Foundation\DiscuzXController;

class MyController extends DiscuzXController
{
  public $Formhash = true; // 启用 formhash 校验

  public function save()
  {
    $this->verifyFormhash(); // 校验失败会抛 403 异常
    // ...
  }
}