2017-08-18 9 views
1

Laravel Sparkのログイン処理中に、リモートAPIのトークンを要求する必要があります。このAPIは、Laravel Sparkアプリケーションとまったく同じユーザーとパスワードを格納します。したがって、私は、認証プロセス中にユーザー名とハッシュされていないパスワードを取得する必要があります。独自の実装によるLaravel Spark認証を無効にすることはできません

私は認証されたメソッドをオーバーライドすることが私の問題の解決策になると考えました。ルート/ 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パラメータでUserを渡していません。この例外は、私が何をしてもスローされます。 LoginControllerからメソッドを削除しても、Spark LoginControllerにスローされたのと同じ例外が発生します。

私は私の/loginエンドポイントを無効にして、スパークLoginControllerで認証方法の$要求と$ユーザパラメータをログインすると、私は$要求がIlluminate\Http\Request::__set_state(array(...))が含まれていると$ユーザーがApp\User::__set_state(array())が含まれていることを参照してください。自分自身のコントローラで同じものを記録すると、$ requestにはIlluminate\Http\Request::__set_state(array(...))が含まれ、$ userは渡されません。

答えて

1

私のPOST /loginルートが正しい機能を呼び出さなかったことが判明しました。これはAuth\[email protected]と呼ばれ、Auth\[email protected]と呼びます。 Route::post('/login', 'Auth\[email protected]');

愚かなミスをし、多分それは同じ問題に直面し、将来的に誰かを助ける:

どのように完全なルートが見えるはずです。

関連する問題