php - 无法使用自己的实现覆盖 Laravel Spark 身份验证

标签 php laravel laravel-5 laravel-spark

在Laravel Spark的登录过程中,我需要请求远程API的 token 。此 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())。当我在自己的 Controller 中记录相同内容时, $request 包含 Illuminate\Http\Request::__set_state(array(...)) 并且 $user 未传递。

最佳答案

事实证明,我的 POST /login 路由没有调用正确的函数。它调用了 Auth\LoginController@authenticated 并且应该调用 Auth\LoginController@login

完整的路由应该是什么样子:Route::post('/login', 'Auth\LoginController@login');

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

关于php - 无法使用自己的实现覆盖 Laravel Spark 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45753805/

相关文章:

php - Laravel 5.6 TrustedProxies 错误

php - 如何在 laravel 5 更新期间验证失败后使用最新更改重新填充表单

php - Laravel 验证错误消息 required_if 不工作

php - 基本PHP MYSQL表单未提交

php - 带条件的左连接查询问题

php - 检查 textarea 不工作 php

php - Android 移动应用程序与 Web 主机数据库的连接

php - 在 Laravel 中检索 updated_at 比 created_at 早 2 小时的记录( Eloquent )

javascript - 在 laravel 5 中验证返回 false 时如何获取选项值的名称

database - Grammar.php 第 39 行中的 ErrorException : Array to string conversion