2016-08-18 5 views
0

td; dr:auth-requestにJSON応答を送信していますが、セッションクッキーがありません。Laravel 5.2クッキーを送信しない認証

私はIlluminate\Foundation\Auth\AuthenticatesUsersと同様のログイン方法を使用しています。私の場合、JSON形式で送信した応答は表示されません。コントローラコードは以下の通りです。

class DashboardController extends Controller 
{ 
    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 

    protected $guard = 'web'; 

    public function login(LoginRequest $request) 
    { 
     $throttles = $this->isUsingThrottlesLoginsTrait(); 

     if ($throttles && $lockedOut = $this->hasTooManyLoginAttempts($request)) { 
      $this->fireLockoutEvent($request); 

      return $this->sendLockoutResponse($request); 
     } 

     $credentials = $this->getCredentials($request); 
     if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) { 
      Auth::user()->incrementLoginCounter(); 
      return $this->handleUserWasAuthenticated($request, $throttles); 
     } 

     if ($throttles && ! $lockedOut) { 
      $this->incrementLoginAttempts($request); 
     } 
     return $this->sendFailedLoginResponse($request); 
    } 
} 

これは基本的にLaravelのTraitと同じことです。

問題:レスポンスとともに送信されるクッキーはありません。ここで

私が知っている:データベース内のユーザーテーブルのremember_token列が正しく

  • を設定取得され

    • 私は手動で設定されたCookieがあるresponse()-> ... ->cookie('name', 'value')
    • して手動でクッキーを設定することができます
    • ガードドライバがsessionに設定され、プロバイダがApp\Userクラス
    • 0123に設定されている
    • セッションドライバはfile、configはデフォルトのlaravel設定です
    • Webミドルウェアはデフォルトと同じですが、Csrf-Middlewareはそのエンドポイントでオフになっています。
    • 私は願って何

    ベストケースを - 問題の解決策、または私はそれが動作しない理由を把握するためにテストすることができるもの上の任意のティップスやアイデアを。

  • 答えて

    0

    私自身の問題に対する解決策を見つけました。それはかなり奇妙なことでした。私がやったことはgithub上のlaravelリポジトリを開き、リクエストにロードされるすべてのAppファイルを調べ、ローカルバージョンと比較することでした。ルータ、コントローラ、ミドルウェア、プロバイダなどを意味します。

    RouteServiceProviderにはメソッドがありませんでした。それは、Webミドルウェアが実際にはなかったときに適用されたことをアプリに伝えます。

    おそらくこれは、以前の開発者がLaravelを最新バージョンに更新していて、正しく機能しなかったためです。たぶんそれはそれを台無しにしているいくつかの魔除けのマージだった。

    ポイントは、すべてのファイルを1行ずつチェックして、それを実際のバージョンと比較すると便利な場合があります:)

    関連する問題