当前位置: 首页 > 知识库问答 >
问题:

Laravel Auth::login($user)工作不正常

左丘源
2023-03-14

我是新来的laravel。我试图登录用户,但我得到以下错误每次:

SessionGuard.php第439行中的ErrorException:传递给Illumb\Auth\SessionGuard::login()的参数1必须是Illumb\Contracts\Auth\Authenticatable的实例,数组给定

这是我的表格:

<form class="form-horizontal" method="post" action="{{ route('login') }}">
{{ csrf_field() }}
      <input type="email" class="form-control" name="email" id="email"><br>
      <input type="password" class="form-control" name="password" id="password"><br>
      <button type="submit" class="btn btn-default">Sign in</button>
</form>

这是我的路线:

Route::post('login/', ['as' => 'login', 'uses' => 'UsersController@login']);

和用户控制器中的登录方法:

public function login(Request $request){
    $this->validate($request, ['email' => 'required|email', 'password' => 'required']);
    $user = $request->all();
    Auth::login($user);
    return redirect('/');
}

谢谢你的帮助

共有1个答案

井镜
2023-03-14

如果要让用户登录,则需要使用Auth::trunt(),而不是Auth::login()

Auth::attempt()接受一个键/值对数组作为其第一个参数。数组中的值将用于在数据库表中查找用户。

所以在你的代码中,这将是:

public function login(Request $request){
    $this->validate($request, ['email' => 'required|email', 'password' => 'required']);
    $user = $request->all();
    Auth::attempt($user);
    return redirect('/');
}

您可以使用Auth::login()手动将现有用户登录到您的应用程序。提供的对象需要是illumb\Contracts\Auth\authenticable的实现,该实现已在默认App\User模型中实现。例如,这可能如下所示:

public function manualLogin(){
    $user = User::find(1);
    Auth::login($user);
    return redirect('/');
}

你可以在我上面链接的文档中了解更多。

 类似资料:
  • 这章我将告诉你如何创建一个用户登录子系统。 你在第四章中学会了如何创建用户登录表单,在第五章中学会了运用数据库。本章将教你如何结合这两章的主题来创建一个简单的用户登录系统。 本章的GitHub链接为: Source, Diff, Zip Session 不知道 Go 有没有第三方库实现类似 Flask-Login 这样的登陆辅助(我也没有好好去找),不过我们知道原理,基本上就是用 Session

  • 我使用了绝对定位(setBounds和null布局),现在开始练习布局管理器,这段代码是用gridbag布局的,但是很少组件没有显示,或者是单元格有一些问题,或者是其他的东西,请帮助!

  • 我试图创建一个基于警报的应用程序。我正在使用。问题是这一点都不可靠。在某些设备中,它起作用…在其他设备中,它的工作方式…而在其他设备中,它根本不起作用。 这是我的闹钟课: 这是我的OneTimeAlarm,只发射一次就不再发射的警报。 这是我的日常警报器,警报器一天只响一次。

  • 我正在使用ora2pg将我的数据从oracle迁移到postgres数据库。作为第一步,我要导出模式。我发现生成的sql文件有许多错误,如重复的sql语句,函数中的重复参数,这些错误在执行sql时失败。我正在尝试手动更正生成的sql文件中的这些错误。是否有更好的方法或避免sql文件中的此错误。实际上,我只需要将数据从oracle传输到postgres数据库。但不知道这是否可能。我使用的是ORA2P

  • 我已经设置了一个骆驼路由,错误处理程序和重新交付策略配置如下 我期待以下结果 消息 1 - 在第一次失败时,当我收到来自系统的异常时,处理程序按以下顺序启动 第一次重试 - 30 秒 第二次重试 - 1 分钟 第三次重试 - 1 分钟 ... 第 6 次重试 - 1 分钟 请告知我在这里做错了什么。

  • 下一个问题是事情不能正常工作,有时vm通过命令看到PostgreSQL,有时它不知道它是什么,并声明它没有安装。当它看到它时,它声明 最后一个问题是,当vm启动时,有200多个常规和安全更新。我希望在第一次设置vm时,通过处理这一点。我试着做: config.vm.provision:shell,内联:%q{sudo apt-get update sudo apt-get upgrade-y} 但