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

时间:2019-01-18 17:24:50

标签: laravel authentication login

我只想使用CPF号码登录。 CPF就像是一个社会安全号码,在巴西是唯一的号码。 我已经有一个具有该编号的数据表,因此无需注册。

请在哪里更改代码以接受CPF代替电子邮件和密码?

谢谢!

2 个答案:

答案 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());
    }