【问题标题】:Cannot override Laravel Spark authentication with own implementation无法使用自己的实现覆盖 Laravel Spark 身份验证
【发布时间】:2018-01-26 23:20:13
【问题描述】:

在 Laravel Spark 的登录过程中,我需要请求一个远程 API 的令牌。此 API 存储与 Laravel Spark 应用程序完全相同的用户和密码。因此需要在认证过程中获取用户的用户名和非哈希密码。

我认为覆盖已验证的方法将是解决我的问题的方法。在 routes/web.php 中,我覆盖了 POST /login 端点并将该端点指向我自己的 LoginController:

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
use Laravel\Spark\Http\Controllers\Auth\LoginController as SparkLoginController;

class LoginController extends SparkLoginController
{
    /**
     * Create a new login controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Handle a successful authentication attempt.
     *
     * @param  Request  $request
     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
     * @return Response
     */
    public function authenticated(Request $request, $user)
    {
        Log::info('authenticated method in LoginController has been called');

        return parent::authenticated($request, $user);
    }
}

此实现引发Missing argument 2 for App\Http\Controllers\Auth\LoginController::authenticated() 异常。不知何故,Laravel 没有在 $user 参数中传递用户。无论我做什么都会抛出这个异常。即使从我的 LoginController 中删除该方法也会导致 Spark LoginController 中抛出相同的异常。

当我禁用 /login 端点并在 Spark LoginController 中记录已验证方法的 $request 和 $user 参数时,我看到 $request 包含 Illuminate\Http\Request::__set_state(array(...)) 并且 $user 包含 App\User::__set_state(array())。当我在自己的控制器中记录相同的内容时,$request 包含 Illuminate\Http\Request::__set_state(array(...)) 并且 $user 未通过。

【问题讨论】:

    标签: php laravel laravel-5 laravel-spark


    【解决方案1】:

    原来我的 POST /login 路由没有调用正确的函数。它调用了Auth\LoginController@authenticated,它应该调用Auth\LoginController@login

    完整路线的外观:Route::post('/login', 'Auth\LoginController@login');

    愚蠢的错误,但也许它会帮助将来遇到同样问题的人。

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 2017-10-14
      • 1970-01-01
      • 2019-04-01
      • 2017-07-17
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多