安装
这些说明假设您已经安装了 CodeIgniter 4 应用程序启动器作为新项目的依据,设置了.env文件,并创建了一个可以通过 Spark CLI 脚本访问的数据库。
要求
- Composer
- Codeigniter v4.3.5 或更高版本
- 一个可以通过 Spark CLI 脚本访问的已创建数据库
- 如果使用 MySQL,则需要 InnoDB(而非 MyISAM)。
Composer 安装
安装通过Composer完成。示例假设您已全局安装它。如果您已将其安装为 phar,或者您需要调整调用 composer 本身的方式。
composer require codeigniter4/shield
故障排除
重要:composer 错误
如果您收到以下错误
Could not find a version of package codeigniter4/shield matching your minimum-stability (stable).
Require it with an explicit version constraint allowing its desired stability.
-
运行以下命令以更改项目
composer.json
中的最小稳定性composer config minimum-stability dev composer config prefer-stable true
-
或指定明确版本
composer require codeigniter4/shield:dev-develop
上述指定了
develop
分支。请参阅https://getcomposer.org.cn/doc/articles/versions.md#branchescomposer require codeigniter4/shield:^1.0.0-beta
上述指定了
v1.0.0-beta
或更高版本且低于v2.0.0
。请参阅https://getcomposer.org.cn/doc/articles/versions.md#caret-version-range-
初始设置
在项目中开始使用 Shield 之前,需要进行一些设置项目。
命令设置
-
运行以下命令。此命令处理手动设置的步骤 1-6。
php spark shield:setup
注意
如果您想自定义表名,则必须在运行数据库迁移之前更改表名。请参阅自定义表名。
手动设置
-
配置设置:将 Auth.php、AuthGroups.php 和 AuthToken.php 从 vendor/codeigniter4/shield/src/Config/ 复制到项目的 config 文件夹中,并将命名空间更新为
Config
。还需要让这些类扩展原始类。请参阅以下示例。这些文件包含应用程序的所有设置、组和权限信息,需要进行修改以满足您网站的需求。// new file - app/Config/Auth.php <?php declare(strict_types=1); namespace Config; // ... use CodeIgniter\Shield\Config\Auth as ShieldAuth; class Auth extends ShieldAuth { // ... }
-
帮助程序设置:几乎每个页面都需要包含
auth
和setting
帮助程序。最简单的方法是将其添加到 app/Config/Autoload.php 文件中public $helpers = ['auth', 'setting'];
-
路由设置:可以在 app/Config/Routes.php 中使用单个调用来设置默认身份验证路由
service('auth')->routes($routes);
-
安全设置:如果您使用会话验证器,出于安全原因,请将
Config\Security::$csrfProtection
设置为'session'
。 -
电子邮件设置:配置 app/Config/Email.php 以允许 Shield 发送电子邮件。
<?php namespace Config; use CodeIgniter\Config\BaseConfig; class Email extends BaseConfig { public string $fromEmail = '[email protected]'; public string $fromName = 'your name'; // ... }
-
迁移:运行迁移。
注意
如果您想自定义表名,则必须在运行数据库迁移之前更改表名。请参阅自定义表名。
php spark migrate --all
注意:迁移错误
当您运行
spark migrate --all
时,如果出现Class "SQLite3" not found
错误- 删除 tests/_support/Database/Migrations/ 中的示例迁移文件
- 或安装
sqlite3
php 扩展