首页 > 解决方案 > 为什么 Laravel Auth::attempt 方法不起作用?

问题描述

我想做用户身份验证,方法 Auth::attempt() 不起作用,但数据正确(laravel 5.2)

public function postLogin(Request $request)
{
    $this->validate($request, [
        'name' => 'required|max:255',
        'password' => 'required'
    ]);

    $username = $request->input('name');
    $password = $request->input('password');


    if (Auth::attempt(['name' => $username, 'password' => $password])) {
        return redirect('home.get');
    } else {
        return "FALSE";
    }

标签: phplaravel

解决方案


如果您使用的是 php artisan make:auth。有一个“使用 AuthenticatesUsers;” 默认代码将登录并使用电子邮件和密码进行检查。因此,您需要复制放入 LoginController 的凭证函数(覆盖默认代码)。下面的代码显示了如何使用电子邮件或带密码的名称登录。

protected function credentials(Request $request)
{
    $field = filter_var($request->get($this->name()), FILTER_VALIDATE_EMAIL)
        ? $this->name()
        : 'name';

    return [
        $field => $request->get($this->name()),
        'password' => $request->password,
    ];
}

推荐阅读