Laravel auth,禁用密码

时间:2018-04-01 17:18:07

标签: php laravel

我正在尝试从我的laravel网站禁用密码验证系统。我想仅使用他们的名字和姓氏登录我的用户。形式明智,注册明智和数据库明智,密码字段已被完全删除。但在登录控制器中,我遇到了一些问题,它似乎无法正常工作。这是我的代码:

public function login(Request $request)
{
  $first_name = $request->first_name;
  $last_name = $request->last_name;

  $user = User::where(['first_name' => $first_name, 'last_name' => $last_name])->first();

  if (!$user) {
    return redirect()->back()->withInput($request->only('first_name', 'last_name'))->withErrors([
        'first_name' => 'We could not find you in our database, if you think this is a mistake kindly contact the site administrators',
    ]);
  }

  Auth::login($user);
  return redirecte('/');

}

在上面的代码中,我收到错误消息

  

我们无法在我们的数据库中找到您,如果您认为这是一个错误,请联系网站管理员

无论我在表单中插入什么信息(true为false)。

2 个答案:

答案 0 :(得分:0)

首先,您必须检查first_namelast_name是否与数据库匹配。

$user = User::where(['first_name' => $first_name, 'last_name' => $last_name])->first()

您在上面的行中遇到了问题。

public function login(Request $request)
{
  $first_name = $request->first_name;
  $last_name = $request->last_name;

  $user = User::where(['first_name' => $first_name, 'last_name' => $last_name])->first();

  if (!$user) {
    return redirect()->back()->withInput($request->only('first_name', 'last_name'))->withErrors([
        'first_name' => 'We could not find you in our database, if you think this is a mistake kindly contact the site administrators',
    ]);
  }

  Auth::loginUsingId($user->id);
  return redirecte('/');

}

答案 1 :(得分:0)

是的,谢谢@laravel levaral回答,但我发现了问题。 我将引用laracasts的用户

  

如果要将多个where子句组合到一个where()中,则每个子句都需要在数组中自己的数组。你正在发送一个阵列。您还使用了=>,这是不正确的。每个where语句的参数用逗号分隔。

所以谁想要看到新的工作代码:

public function login(Request $request)
{
  $first_name = $request->first_name;
  $last_name = $request->last_name;

  $user = User::where('first_name', $first_name)
  ->where('last_name', $last_name)
  ->first();

  if (!$user) {
    return redirect()->back()->withInput($request->only('first_name', 'last_name'))->withErrors([
        'first_name' => 'We could not find you in our database, if you think this is a mistake kindly contact the site administrators',
    ]);
  }

  Auth::login($user);
  return redirect('/');

}