【问题标题】:Laravel v5.2.* (v5.2.29) Auth::guard('api')->attempt($user) fatal errorLaravel v5.2.* (v5.2.29) Auth::guard('api')->attempt($user) 致命错误
【发布时间】:2016-12-27 15:43:11
【问题描述】:

有没有人遇到过这个问题

dd($this->user->check()); return false

但是

Auth::guard('user')->attempt(App\User::find(1)) 

返回错误

调用未定义的方法 Illuminate\Auth\TokenGuard::attempt()

请帮助解决这个问题。

【问题讨论】:

  • dd(Auth::guard('user')->check())

标签: php laravel


【解决方案1】:

我解决了这个问题

config/auth.php 配置中:

'user' => [
    'driver' => 'token',
    'provider' => 'userProvider',
],

我们需要改为:

'user' => [
    'driver' => 'session',
    'provider' => 'userProvider',
],

因为Auth::guard数据存储在会话中

并进一步研究众所周知的方案

Auth::login() = Auth::guard('user')->login()
Auth::attempt() = Auth::guard('user')->attempt()
Auth::user() = Auth::guard('user')->user()
...

【讨论】:

    【解决方案2】:

    你应该向函数attempt传递一个信用数组,而不是一个用户对象。

    例如:

    Auth::guard('user')->attempt([
        'email' => 'some@email.com',
        'password' => '1234'
    ]);
    

    如果你在使用 Laravel 并且需要对用户进行身份验证,你可以调用类似的方法:

    auth()->attempt([
        'email' => 'some@email.com',
        'password' => '1234'
    ]);
    

    【讨论】:

    • 我知道。但是文档说我可以使用 Auth::guard('api')->attempt(),Auth::guard('any')->attempt(),- >login() 等进行多重身份验证。
    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2016-05-26
    • 2016-09-07
    相关资源
    最近更新 更多