Skip to content

配置说明

一句话:系统配置在env.php,应用配置在useApp.php,SQL配置在useSQL.php,用Anon_Env获取。

系统配置 (env.php)

php
define('ANON_DB_HOST', 'localhost');
define('ANON_DB_PORT', 3306);
define('ANON_DB_PREFIX', 'anon_');
define('ANON_DB_USER', 'root');
define('ANON_DB_PASSWORD', 'root');
define('ANON_DB_DATABASE', 'anon');
define('ANON_DB_CHARSET', 'utf8mb4');
define('ANON_INSTALLED', true);

应用配置 (useApp.php)

php
return [
    'app' => [
        'autoRouter' => true,  // 是否启用自动路由(推荐)
        'debug' => [
            'global' => false,  // 全局调试
            'router' => false,  // 路由调试
        ],
        'avatar' => 'https://www.cravatar.cn/avatar',  // 头像源URL
        'token' => [
            'enabled' => true,  // 是否启用Token验证
            'refresh' => false, // 是否在验证后自动刷新Token生成新Token
            'whitelist' => [
                '/auth/login',
                '/auth/logout',
                '/auth/check-login',
                '/auth/token',
                '/auth/captcha'
            ],  // Token验证白名单路由
        ],
        'captcha' => [
            'enabled' => true,  // 是否启用验证码
        ],
        'cache' => [
            'enabled' => true,  // 是否启用全局缓存
            'time' => 3600,     // 全局缓存时间(秒)
            'exclude' => [
                '/auth/',           // 所有认证相关接口
                '/anon/debug/',     // Debug 接口
                '/anon/install',    // 安装接口
            ], // 自动排除缓存的路径模式
        ],
        'security' => [
            'csrf' => [
                'enabled' => true,      // 是否启用 CSRF 防护
                'stateless' => true,    // 是否使用无状态 Token(推荐)
            ],
            'xss' => [
                'enabled' => true,      // 是否启用 XSS 自动过滤
                'stripHtml' => true,    // 是否移除 HTML 标签
                'skipFields' => ['password', 'token', 'csrf_token'], // 跳过的字段
            ],
            'sql' => [
                'validateInDebug' => true, // 在调试模式下验证 SQL 查询安全性
            ],
        ],
        'rateLimit' => [
            'register' => [
                'ip' => [
                    'enabled' => true,        // 是否启用IP限制
                    'maxAttempts' => 5,        // 每小时最大注册次数
                    'windowSeconds' => 3600,   // 时间窗口(秒)
                ],
                'device' => [
                    'enabled' => true,         // 是否启用设备指纹限制
                    'maxAttempts' => 3,        // 每小时最大注册次数
                    'windowSeconds' => 3600,   // 时间窗口(秒)
                ],
            ],
        ],
    ],
];

SQL 安装配置 (useSQL.php)

安装时使用的 SQL 语句配置,用于创建数据库表结构。

php
<?php
if (!defined('ANON_ALLOWED_ACCESS')) exit;

return [
    'users' => "CREATE TABLE IF NOT EXISTS `{prefix}users` (
        `uid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '用户 ID',
        `name` VARCHAR(255) NOT NULL UNIQUE COMMENT '用户名',
        `password` VARCHAR(255) NOT NULL COMMENT '密码哈希值',
        `email` VARCHAR(255) NOT NULL UNIQUE COMMENT '邮箱地址',
        `group` VARCHAR(255) NOT NULL DEFAULT 'member' COMMENT '用户组',
        `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表'"
];

使用 {prefix} 作为表前缀占位符,安装时会自动替换为 env.php 中配置的表前缀。

  • 可以添加多个表的 SQL 语句,安装系统会自动执行所有 SQL
  • 每个表的 SQL 语句必须是完整的 CREATE TABLE 语句

配置访问

Anon_System_Env

php
// 获取配置值(自动缓存,首次解析后存入内存)
$enabled = Anon_System_Env::get('app.token.enabled', false);
$host = Anon_System_Env::get('system.db.host', 'localhost');
$whitelist = Anon_System_Env::get('app.token.whitelist', []);

// 清除配置缓存
Anon_System_Env::clearCache();

性能优化: 配置值会自动缓存,首次解析后存入内存,后续调用直接读取缓存,提升性能。

Anon_System_Config

php
// 添加路由
Anon_System_Config::addRoute('/api/custom', function() {
    Anon_Http_Response::success(['message' => '自定义路由']);
});

// 添加错误处理器
Anon_System_Config::addErrorHandler(404, function() {
    Anon_Http_Response::notFound('页面不存在');
});

// 获取路由配置
$config = Anon_System_Config::getRouterConfig();
// 返回: ['routes' => [...], 'errorHandlers' => [...]]

// 检查是否已安装
$installed = Anon_System_Config::isInstalled();
// 返回: bool

Released under the MIT License.