Laravel: 除了电子邮件和密码,我如何使用其他数据?
Laravel: How do I use other data than email and password?
我只想使用 CPF 号码登录。 CPF 就像一个社会安全号码或其他类似的号码,这在巴西是唯一的号码。
我已经有这个号码的数据table,所以不需要注册。
请问我在哪里更改代码以接受 CPF 而不是电子邮件和密码?
谢谢!
您必须在您的 LoginController 中覆盖这些方法,只需将其粘贴并进行相应更改即可。
将默认 email
更改为 cpf
字段名称:
public function username()
{
return 'cpf'; // or whatever field you use to login
}
在此处使用凭据进行验证:
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string|exists:users,cpf',
]);
}
执行登录请求。在这里我们寻找用户然后手动登录并将您重定向到仪表板(主页),如果失败,您将被重定向回插入表单的输入:
public function login(Request $request)
{
$this->validateLogin($request);
$user = User::where('cpf', $request->cpf)->first();
if ($user) {
Auth::login($user);
return redirect()->intended('home');
}
return redirect()->back()->withInput($request->all());
}
DB table 我测试了:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('cpf')->unique();
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
});
第 1 步:打开文件 AuthenticatesUsers.php
第 2 步:更新 username()
功能,默认您会看到电子邮件。您需要将其更新为 cpf。
public function username()
{
return 'cpf';
}
第三步:更新credentials(Request $request)
功能,默认为密码。您可以根据自己的方法进行更改。如果你不想要它,你也可以删除密码字段!
protected function credentials(Request $request)
{
//return $request->only($this->username(), 'password');
return $request->only($this->username());
}
我只想使用 CPF 号码登录。 CPF 就像一个社会安全号码或其他类似的号码,这在巴西是唯一的号码。 我已经有这个号码的数据table,所以不需要注册。
请问我在哪里更改代码以接受 CPF 而不是电子邮件和密码?
谢谢!
您必须在您的 LoginController 中覆盖这些方法,只需将其粘贴并进行相应更改即可。
将默认 email
更改为 cpf
字段名称:
public function username()
{
return 'cpf'; // or whatever field you use to login
}
在此处使用凭据进行验证:
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string|exists:users,cpf',
]);
}
执行登录请求。在这里我们寻找用户然后手动登录并将您重定向到仪表板(主页),如果失败,您将被重定向回插入表单的输入:
public function login(Request $request)
{
$this->validateLogin($request);
$user = User::where('cpf', $request->cpf)->first();
if ($user) {
Auth::login($user);
return redirect()->intended('home');
}
return redirect()->back()->withInput($request->all());
}
DB table 我测试了:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('cpf')->unique();
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
});
第 1 步:打开文件 AuthenticatesUsers.php
第 2 步:更新 username()
功能,默认您会看到电子邮件。您需要将其更新为 cpf。
public function username()
{
return 'cpf';
}
第三步:更新credentials(Request $request)
功能,默认为密码。您可以根据自己的方法进行更改。如果你不想要它,你也可以删除密码字段!
protected function credentials(Request $request)
{
//return $request->only($this->username(), 'password');
return $request->only($this->username());
}