自定义登录标识符
如果你的应用程序需要使用除 email
或 username
之外的其他内容,你可以指定 users
表中你可能已添加的任何有效列。
这让你可以轻松地使用电话号码、员工或学校 ID 等作为用户标识符。你必须执行以下步骤来设置此功能。
这仅适用于会话身份验证器。
注意
默认情况下,Shield 要求用户注册他们的电子邮件和密码。要从用户注册中删除电子邮件,需要对本页上的步骤进行进一步自定义。
创建迁移文件
创建一个 迁移,将新列添加到 users
表中。
更改 $validFields
编辑 app/Config/Auth.php,以便你刚刚创建的新列位于 $validFields
数组中。
public array $validFields = [
'employee_id'
];
如果你的网站上有使用不同凭据的多个登录表单,则数组中必须包含所有有效的标识字段。
public array $validFields = [
'email',
'employee_id'
];
更新验证规则
警告
这对于安全性非常重要。
您必须编写新的验证规则,然后使用自定义验证规则说明进行设置。
注意
不仅要更新登录的验证规则,还要更新注册的规则。如果您不添加新的验证规则,新字段将不会保存到数据库中。
自定义登录视图
-
更改app/Config/Auth.php 文件中的
login
视图文件。public array $views = [ 'login' => '\App\Views\Shield\login', // ... ];
-
将文件vendor/codeigniter4/shield/src/Views/login.php复制到app/Views/Shield/login.php。
-
自定义登录表单,将默认
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>