2013-10-06 256 views
1

我有一個登錄表單,我使用正確的憑據登錄自己。當你登錄時,我做了一個重定向到我的「關於」頁面(用於頁面測試這個功能)。 我做了下面的代碼段已經登錄後被重定向到登錄頁面

 $input = Input::all(); 
     $login = Auth::attempt([ 
      'username' => $input['username'], 
      'password' => $input['password'] 
     ]); 

     if($login){ 
      return Redirect::to('about'); 
     } 
     else{ 
      dd('not logged in!'); 
     } 

這段代碼是可以正常使用 但現在在我的路線有關網頁上面我加->before('auth');所以,如果我沒有登錄,我要去重定向到登錄頁面,如果我已經登錄繼續。

代碼片段:

Route::get('about', function(){ 
    $title = 'About'; 
    return View::make('about')->with('title', $title); 
})->before('auth'); 

但通過添加->before('auth');,我總是被即使有正確的憑據登錄後重定向到登錄頁面。所以我登錄,通常我希望重定向到關於頁面,但我正在重定向到登錄頁面。

我在做什麼錯?

編輯

做了一些更多的調試,這就是我發現:

重定向到我對路線和執行這樣的:

Route::get('about', function() 
{ 
    dd(Auth::check()); // This returns false 
}); 

但不是重定向到我試過的路線:

if($login){ 
    dd(Auth::check()); // This returns true 
} 

所以重定向後,似乎我退出或類似的東西?

回答

1

你應該有一個Auth過濾器,需要檢查是否登錄in/out,如:

Route::filter('auth', function() 
{ 
    if (Auth::guest()) return Redirect::to('login'); 
}); 

這(過濾器)的代碼應該在app/filters.php和你的路線(你有什麼)

Route::get('about', function(){ 
    $title = 'About'; 
    return View::make('about')->with('title', $title); 
})->before('auth'); 
加入

此外,您還可以使用它作爲給定的代碼如下

Route::get('about', array('before' => 'auth' ,function() 
{ 
    $title = 'About'; 
    return View::make('about')->with('title', $title); 
})); 

更新:

此外,如果你正在使用數據庫會話,然後確保primary keyid模型(用戶模型),如果沒有,那麼手動設置,如

protected $primaryKey = "IdOfTheCustomIDFieldInTheTable"; 
+0

是的,這是'app/filter.php'中的默認值,我有你說的代碼。但我仍然遇到這個問題 – mXX

+1

這對我來說伎倆!謝謝@ 2003年以來的恢復 – mXX

1

有您嘗試將記憶參數傳遞給Auth :: attempt?

$login = Auth::attempt([ 
    'username' => $input['username'], 
    'password' => $input['password'] 
], true); 

此外,您使用哪種會話存儲機制?

+0

是的,我剛剛嘗試過,仍然是相同的結果。我沒有改變會話文件的任何東西,說實話,剛剛去看看,它是'本機' – mXX

+0

奇怪。 Cookie是否設置(您應該能夠在您的瀏覽器中檢查)。我在Laravel的Auth組件中完全沒有遇到任何問題。 – euantorano

+0

我這麼想是因爲我有一個名爲'laravel_session'的localhost的cookie – mXX