laravel 8 - auth()->factory() 相同的 refresh() 和尝试() 在 JWT Auth Controller 中未定义

Posted

技术标签:

【中文标题】laravel 8 - auth()->factory() 相同的 refresh() 和尝试() 在 JWT Auth Controller 中未定义【英文标题】:laravel 8 - auth()->factory() same refresh() and attemp() is undefind in JWT AuthControllerlaravel 8 - auth()->factory() 相同的 refresh() 和尝试() 在 JWT Auth Controller 中未定义 【发布时间】:2021-06-19 04:59:14 【问题描述】:

我在 laravel 8 中使用 JWT 进行 API 身份验证。

当我在我的控制器中使用 auth()-> 时,对于 factory() 或 attemp() 或任何东西,laravel 不知道它并说:

Undefined method 'attempt'.intelephense(1013)

我不知道我忘了包括什么

我的 AuthController :

namespace App\Http\Controllers\Api\Admin;

use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;

class AuthController extends Controller

    
    public function __construct() 
        $this->middleware('auth:api', ['except' => ['login', 'register']]);
    

    
    public function login(Request $request)
        $validator = Validator::make($request->all(), [
            'email' => 'required|email',
            'password' => 'required|string|min:6',
        ]);

        if ($validator->fails()) 
            return response()->json($validator->errors(), 422);
        

        if (! $token = auth()->attempt($validator->validated())) 
            return response()->json(['error' => 'Unauthorized'], 401);
        

        return $this->createNewToken($token);
    
.
.
.
.
.

还有我的 config/auth.php 文件:

return [

    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],


    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
            'hash' => false,
        ],
    ],


    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
        // Following array is newly added to config
        'otp-user' => [
            'driver' => 'otp-based-auth-provider'
        ],


    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
            'throttle' => 60,
        ],
    ],


    'password_timeout' => 10800,

];


【问题讨论】:

【参考方案1】:

Intelephense 在处理 Laravel 中的某些方法时遇到了一些麻烦。您可以忽略它,因为它应该可以工作,也可以通过以下方式调用它:

JWTAuth::attempt($validator->validated) 

它应该使错误消失。

【讨论】:

以上是关于laravel 8 - auth()->factory() 相同的 refresh() 和尝试() 在 JWT Auth Controller 中未定义的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.8:如何在 Global Scope 的 apply 方法中解析 auth()->user()?

PHP 错误:类 'Illuminate/Foundation/Auth/Admin' [Laravel 8]

Laravel 8 门不适用于 Auth::guard

laravel 8 auth Route [login] 未定义

Laravel 8 tymon/jwt-auth 使另一个用户的令牌无效

在 laravel 8 中创建 auth guard 使用中间件