使用会话验证器
会话身份验证器提供传统的 ID/密码身份验证。
学习任何新的身份验证系统都可能很困难,尤其是当它们变得更加灵活和复杂时。本指南旨在为使用 Shield 时执行的常见操作提供简短示例。它并非旨在成为每个部分的详尽文档。这可以通过特定于区域的文档文件更好地处理。
注意
这些示例假设您已运行设置脚本,并且在应用程序的 app/Config 文件夹中具有 Auth
和 AuthGroups
配置文件的副本。
配置
配置重定向 URL
如果您需要每个人在登录/注销/注册操作后重定向到一个 URL,则可以修改 app/Config/Auth.php 中的 Config\Auth::$redirects
数组以指定要重定向到的 URL。
默认情况下,成功的登录或注册尝试都将重定向到 /
,而注销操作将重定向到 已命名路由 login
或 URI 路径 /login
。您可以在 app/Config/Auth.php 配置文件中更改使用的默认 URL
public array $redirects = [
'register' => '/',
'login' => '/',
'logout' => 'login',
];
注意
此重定向在指定操作完成后发生。在注册或登录的情况下,它可能不会立即发生。例如,如果你指定了任何 Auth 操作,它们将在这些操作成功完成后被重定向。如果没有指定 Auth 操作,它们将在注册或登录后立即被重定向。
配置记住我功能
记住我功能默认启用。虽然这是以安全的方式处理的,但一些网站可能希望禁用它。你可能还想更改它记住用户的时间长度,并且不需要额外的登录。
public array $sessionConfig = [
'field' => 'user',
'allowRemembering' => true,
'rememberCookieName' => 'remember',
'rememberLength' => 30 * DAY,
];
通过电子邮件启用账户激活
注意
你需要配置 app/Config/Email.php 以允许 Shield 发送电子邮件。请参阅 安装。
默认情况下,一旦用户注册,他们就有了一个可以使用的活动帐户。你可以在 Auth
配置文件中启用 Shield 内置的基于电子邮件的激活流程。
public array $actions = [
'register' => \CodeIgniter\Shield\Authentication\Actions\EmailActivator::class,
'login' => null,
];
启用两因素验证
注意
你需要配置 app/Config/Email.php 以允许 Shield 发送电子邮件。请参阅 安装。
默认情况下处于关闭状态,Shield 的基于电子邮件的 2FA 可以通过在 Auth
配置文件中指定要使用的类来启用。
public array $actions = [
'register' => null,
'login' => \CodeIgniter\Shield\Authentication\Actions\Email2FA::class,
];
自定义路由
如果你需要自定义处理任何身份验证功能的方式,你仍然可以使用 service('auth')->routes()
帮助器,但你需要传递 except
选项,其中包含要自定义的路由列表
service('auth')->routes($routes, ['except' => ['login', 'register']]);
然后将路由添加到你的自定义控制器
$routes->get('login', '\App\Controllers\Auth\LoginController::loginView');
$routes->get('register', '\App\Controllers\Auth\RegisterController::registerView');
使用 spark 路由 命令检查你的路由。
保护页面
默认情况下,Shield 不保护页面。要使某些页面仅对已登录用户可访问,请设置 session
控制器过滤器。
例如,如果你想限制所有路由(例如 localhost:8080/admin
、localhost:8080/panel
等),你需要在 app/Config/Filters.php 文件中添加以下代码。
public $globals = [
'before' => [
// ...
'session' => ['except' => ['login*', 'register', 'auth/a/*', 'logout']],
],
// ...
];
注意
Shield 提供的过滤器 $aliases
由位于 src/Config/Registrar.php 的 注册器 类自动为你添加。因此,你无需在 app/Config/Filters.php 中添加。
使用 spark 路由 命令检查你的过滤器。