我只想使用CPF号码登录。 CPF就像是一个社会安全号码,在巴西是唯一的号码。 我已经有一个具有该编号的数据表,因此无需注册。
请在哪里更改代码以接受CPF代替电子邮件和密码?
谢谢!
答案 0 :(得分:1)
您将不得不在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());
}
我测试过的数据库表:
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 :(得分:1)
步骤1:打开文件AuthenticatesUsers.php
步骤2:更新username()
功能,默认情况下,您会看到电子邮件。您需要将其更新为cpf。
public function username()
{
return 'cpf';
}
第3步:更新credentials(Request $request)
函数,默认情况下为密码。您可以根据自己的方法进行更改。如果您不想这样做,也可以删除密码字段!
protected function credentials(Request $request)
{
//return $request->only($this->username(), 'password');
return $request->only($this->username());
}