Laravel:如何通过电子邮件对用户进行身份验证,其中电子邮件地址存储在单独的表中?

时间:2016-04-25 15:07:30

标签: php authentication laravel-5.2

我正在使用Laravel创建一个网站,我希望使用Auth中间件。为了让用户添加多个电子邮件地址和电话号码,以便他们有恢复等备份选项,我将它们存储在主users表的单独表中。

仔细查看身份验证文档并浏览用于身份验证的某些类,我不确定如何指定应从各自的表中检索电子邮件和电话号码,而不是{{1 } table(usersemail_addresses)。

如果有人能告诉我如何设置,或者至少指出我正确的方向,我将非常感激。不需要拼写它,但如果有人知道我需要编辑哪些文件会有很大帮助。

2 个答案:

答案 0 :(得分:1)

通过电子邮件表格中的电子邮件获取您的用户记录:

$record = Emails::where('email', $email)->first();

if($record){
    //if this email is valid you will get the user record
    if(auth()->validate(['id' => $record->user_id, 'password' => $input['password']])) auth()->loginUsingId($record->user_id)
    else echo 'Invalid password';
}
else {
    echo 'User not present!'
}

答案 1 :(得分:0)

当客户要求您未曾看到的东西时,就会出现疯狂的情况。无论如何,这为我们提供了最好的学习方法,我喜欢这类客户。

protected function credentials(Request $request)
{
return $request->only('customer_id', 'password', 'dob');
}

并将其插入LoginController.php中。

我们必须废除另一种策略才能使它起作用,那就是validateLogin()。它用于从login.blade.php批准邀请

/**
* Validate the user login request.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function validateLogin(Request $request)
{
$this->validate($request, [ 'customer_id' => 'required|string',
'password' => 'required|string',
'dob' => 'required|date'
]);
}

您可以从here

进行检查