我正在使用Laravel创建一个网站,我希望使用Auth中间件。为了让用户添加多个电子邮件地址和电话号码,以便他们有恢复等备份选项,我将它们存储在主users
表的单独表中。
仔细查看身份验证文档并浏览用于身份验证的某些类,我不确定如何指定应从各自的表中检索电子邮件和电话号码,而不是{{1 } table(users
和email_addresses
)。
如果有人能告诉我如何设置,或者至少指出我正确的方向,我将非常感激。不需要拼写它,但如果有人知道我需要编辑哪些文件会有很大帮助。
答案 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
进行检查