跳至内容

自定义登录标识符

如果你的应用程序需要使用除 emailusername 之外的其他内容,你可以指定 users 表中你可能已添加的任何有效列。

这让你可以轻松地使用电话号码、员工或学校 ID 等作为用户标识符。你必须执行以下步骤来设置此功能。

这仅适用于会话身份验证器。

注意

默认情况下,Shield 要求用户注册他们的电子邮件和密码。要从用户注册中删除电子邮件,需要对本页上的步骤进行进一步自定义。

创建迁移文件

创建一个 迁移,将新列添加到 users 表中。

更改 $validFields

编辑 app/Config/Auth.php,以便你刚刚创建的新列位于 $validFields 数组中。

public array $validFields = [
    'employee_id'
];

如果你的网站上有使用不同凭据的多个登录表单,则数组中必须包含所有有效的标识字段。

public array $validFields = [
    'email',
    'employee_id'
];

更新验证规则

警告

这对于安全性非常重要。

您必须编写新的验证规则,然后使用自定义验证规则说明进行设置。

注意

不仅要更新登录的验证规则,还要更新注册的规则。如果您不添加新的验证规则,新字段将不会保存到数据库中。

自定义登录视图

  1. 更改app/Config/Auth.php 文件中的login视图文件。

    public array $views = [
        'login'                       => '\App\Views\Shield\login',
        // ...
    ];
  2. 将文件vendor/codeigniter4/shield/src/Views/login.php复制到app/Views/Shield/login.php

  3. 自定义登录表单,将默认email输入的名称更改为新字段名称。

    <!-- Email -->
    <div class="mb-2">
        <input type="text" class="form-control" name="employee_id" autocomplete="new-employee-id" placeholder="12345" value="<?= old('employee_id') ?>" required>
    </div>