在登录laravel 5

时间:2015-04-22 14:45:22

标签: authentication laravel laravel-5

我使用laravel的5内置身份验证进行登录。我花了几个小时找到位于登录时使用的数据库查询的位置,我想同时允许电子邮件和用户名是电子邮箱。任何人都知道数据库查询位于何处?任何人都知道如何在身份验证上同时允许用户名和密码。

PS:为了提高细节,我只希望用户允许他们同时登录用户名和电子邮件。

PS:再次!我在laravel 5而不是4上跑步!

1 个答案:

答案 0 :(得分:1)

在表单中定义登录名和密码输入,然后请求应如下所示:

public function authorize() {
    return true;
}


public function rules()
{
    return [
       'login' => 'required',
       'password' => 'required'
    ];
}

然后您的登录功能应如下所示:

public function login(LoginRequest $request)
{
    $field = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
    $request->merge([$field => $request->input('login')]);

    if ($this->auth->attempt($request->only($field, 'password')))
    {
        return redirect('/');
    }

    return redirect('/login')->withErrors([
        'error' => 'You email/username or password combination is wrong.',
    ]);
}

这是一个优化版本,因为它不是进行2次尝试来验证两者的凭据:if是用户名还是密码,laravel将通过验证给定数据是否指向电子邮件登录来完成工作或用户名。