首页 > 解决方案 > 在 Laravel 5.4 中使用 Auth 使用 or 条件登录

问题描述

我有 2 个字段的登录表单。第一个可以同时使用电子邮件或手机,第二个是密码。

如何使用 auth 进行检查?

我的代码片段是:-

if ( Auth::check([
            'email' => $request->email, 
            'mobile' => $request->email, 
            'password' => $request->password,
            false, 
            false
        ])) 
    {
        $user = Auth::user();
        return $user;
    }

但是这个东西是把键和操作符结合起来。我怎样才能实现电子邮件或手机和密码。

标签: laravel-5.4

解决方案


Auth::check()在检测提供的登录格式(电子邮件或手机) 之前添加条件。首先,将字段名称更改为登录。下一个:

$credentials = [];
if (filter_var($request->login, FILTER_VALIDATE_EMAIL)) {
    $credentials['email'] = $request->login;
} else {
    $credentials['mobile'] = $request->login;
}
if ( Auth::attempt($credentials)) {
    $user = Auth::user();
    return $user;
}

并记住使用Auth::attempt()而不是Auth::check()检查用户是否已登录。


推荐阅读