Laravel 拉威尔:我如何使用电子邮件和密码以外的其他数据?

Laravel 拉威尔:我如何使用电子邮件和密码以外的其他数据?,laravel,authentication,login,Laravel,Authentication,Login,我只想使用CPF号码来允许登录。CPF就像一个社会保障号码或类似的号码,这在巴西是独一无二的。 我已经有了这个数字的数据表,所以不需要注册 我在哪里更改代码以接受CPF而不是电子邮件和密码 谢谢 您必须在LoginController中重写这些方法,只需将其粘贴到中并进行相应更改 将默认的email更改为cpf字段名: 公共函数用户名() { 返回'cpf';//或用于登录的任何字段 } 使用凭据在此处执行验证: 受保护功能验证登录(请求$Request) { $request->valida

我只想使用CPF号码来允许登录。CPF就像一个社会保障号码或类似的号码,这在巴西是独一无二的。 我已经有了这个数字的数据表,所以不需要注册

我在哪里更改代码以接受CPF而不是电子邮件和密码


谢谢

您必须在LoginController中重写这些方法,只需将其粘贴到中并进行相应更改

将默认的
email
更改为
cpf
字段名:

公共函数用户名()
{
返回'cpf';//或用于登录的任何字段
}
使用凭据在此处执行验证:

受保护功能验证登录(请求$Request)
{
$request->validate([
$this->username()=>'必需的|字符串|存在:用户,cpf',
]);
}
执行登录请求。在这里,我们查找用户,然后手动登录并将您重定向到仪表板(主页),如果失败,您将被重定向回表单中插入的输入:

公共功能登录(请求$Request)
{
$this->validateLogin($request);
$user=user::where('cpf',$request->cpf)->first();
如果($user){
Auth::login($user);
return redirect()->预期的('home');
}
返回redirect()->back()->withInput($request->all());
}
DB表I测试时使用:

Schema::create('users',函数(Blueprint$表){
$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';
    }
步骤3:更新
凭证(Request$Request)
功能,默认为密码。您可以根据您的方法进行更改。如果您不想要它,您也可以删除密码字段

    protected function credentials(Request $request)
    {
        //return $request->only($this->username(), 'password');
        return $request->only($this->username());
    }

它不需要密码??可以登录任何人的帐户吗?嗯,用户目前还没有密码。但我可以使用另外两种数据,比如“组”和“配额”。无论如何,这些字段不会默认为Laravel。因此,我将不得不不使用默认字段。更新了我的答案,在本地进行了测试,结果有效。:)不起作用。它返回419错误“抱歉,您的会话已过期。请刷新并重试”。这可能是另一个问题。你可能会读到你的答案。在尝试安装“背包”之前,我已经安装了它。我认为将rm-R和重新启动,但现在,编码前登录第一是!这就是问题所在。从stretch重新安装所有组件,轻松工作!