2016-08-18 77 views
0

td; dr:我向認證請求發送JSON響應,但會話cookie丟失。Laravel 5.2認證不發送cookie

我使用的登錄方法與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的特質基本相同。

問題:沒有發送響應的cookie。

這裏是我知道的:

  • 用戶表的數據庫中的remember_token列得到正確設置
  • 我可以response()-> ... ->cookie('name', 'value')
  • 手動設置cookie手動設置的餅乾正確發送迴應
  • 警衛驅動程序設置爲session,提供程序設置爲App\User
  • 會話驅動程序是file並且config是默認的laravel config
  • Web中間件與默認相同,Csrf-Middleware在該端點上關閉。

我希望什麼:最好的情況 - 對於這個問題,或者有什麼我可以測試弄清楚爲什麼它不工作任何的竅門和創意的解決方案。

回答

0

我自己發現了我的問題的解決方案,這是一個相當奇怪的事情。我所做的就是在github上打開laravel存儲庫,然後瀏覽將在請求中加載的所有應用程序文件,並將它們與我的本地版本進行比較。這意味着路由器,控制器,中間件,提供商等。

RouteServiceProvider缺少整個方法。這導致該應用程序告訴我,該網頁中間件實際上沒有應用。

也許這是因爲以前的開發人員更新Laravel到最新版本,並沒有做正確的工作。也許這是一些Git合併,搞砸了。

重點是 - 有時它很好,只是逐行瀏覽所有文件並將其與工作版本進行比較:)