【问题标题】:Lumen 5.8 Auth attempt does not existLumen 5.8 Auth 尝试不存在
【发布时间】:2019-12-24 20:32:11
【问题描述】:

我是 Lumen 的新手并正在构建一个 RESTful API,但由于 Auth::attempt 不起作用,我现在卡了几个小时。我一直在寻找任何答案,但所有结果都只是 Laravel 而不是 Lumen。

所以我创建了一个 AuthController 和登录方法来验证用户,但我得到了一个错误。

public function login(Request $request)
{
        $this->validate($request, [
            'email' => 'required|string|email',
            'password' => 'required|string',
        ]);

        $credentials = $request->only('email', 'password');
        if( !Auth::attempt($credentials) ) {
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        }
}

这是错误:“方法 Illuminate\Auth\RequestGuard::attempt 不存在。”

有人可以帮助我吗?谢谢!

【问题讨论】:

    标签: php laravel lumen


    【解决方案1】:

    Lumen Passport 设置:

    composer require dusterio/lumen-passport
    

    在 bootstrap/app.php 中启用 app 和 auth 服务提供者

    在引导文件中添加以下服务提供者

    $app->register(Laravel\Passport\PassportServiceProvider::class);
    $app->register(Dusterio\LumenPassport\PassportServiceProvider::class);
    

    将/app/Providers/AuthServiceProvider中auth服务提供者的boot函数里面的内容替换为:

    LumenPassport::routes($this->app->router);
    

    运行 php artisan 迁移

    运行 php artisan passport:install

    那就关注这个https://laravel.com/docs/5.8/passport#issuing-access-tokens

    请记住,lumen 版本没有用于授权访问的视图或路由,您必须在客户端上单独构建它们。

    【讨论】:

    • 我忘记在 bootstrap 中添加 make auth 配置文件并将 api 中的令牌替换为 passport 并将 api 设置为默认值并在 bootstrap 文件中启用外观和 eloquent
    【解决方案2】:

    你可以试试以下:

       if (!Auth::guard('web')->attempt($credentials) {
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        }
    

    该方法仅适用于使用 web 中间件的路由,您可以检查一下吗? 您可能需要编辑您的 config/auth 文件。

    【讨论】:

    • 好的,我试试。谢谢!
    猜你喜欢
    • 2017-12-28
    • 2021-12-12
    • 1970-01-01
    • 2019-12-27
    • 2018-06-24
    • 1970-01-01
    • 2016-09-17
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多