2015-10-16 187 views
0

我有一個註冊表單,它可以註冊並登錄用戶。 我在保護路由的控制器中使用$this->middleware('auth');來提示用戶登錄。登錄表單傳遞一個POST請求Laravel的AuthController W /用戶名和密碼:Laravel 5.1用戶登錄不起作用

<input type="hidden" name="_token" value="XXXXXXXXXX"> 
    <div class="widget-content"> 
     <input type="text" placeholder="Username" name="username"> 
     <input type="password" placeholder="Password" name="password"> 
     <input class="btn btn-blue pull-right" type="submit" /> 
    </div> 
</form> 

路線:

//authentication routes 
Route::get('auth/login', 'Auth\[email protected]'); 
Route::post('auth/login', 'Auth\[email protected]'); 
Route::get('auth/logout', 'Auth\[email protected]'); 

// Registration routes... 
Route::get('auth/register', 'Auth\[email protected]'); 
Route::post('auth/register', 'Auth\[email protected]'); 

我已經使用了認證系統的現成的,貨架postLogin()功能嘗試,試圖通過用戶名,姓名,郵件沒有任何運氣。我試圖重寫這樣的父類的方法:

public function postLogin(Request $request) 
{ 
    $username = $request->input('username'); 
    $password = $request->input('password'); 

    if (Auth::attempt(['name' => $username, 'password' => $password])) { 
     // Authentication passed... 
     return redirect('dashboard'); 
    } else { 
     return redirect()->intended('auth/login'); 
    } 
} 

編輯:

(這是舊的,對於有這個問題的人)的正確使用散列函數是

$password = Hash::make('yourPasswordString'); 

$result = Hash::check('yourPasswordString', $password); //returns true 
+0

你收到了什麼錯誤? – Amo

+0

你想讓他們用用戶名而不是電子郵件登錄嗎? – andrewtweber

+0

檢查步驟在這裏看看是否有幫助http://stackoverflow.com/questions/32029689/laravel-5-user-can-not-be-retrieved-after-successful-authentication/32030103#32030103 –

回答

0

能這是CSFR令牌?由於您沒有使用Facade調用表單,因此您可能需要在打開表單標記後添加令牌調用。

這裏是電話:

{! csrf_field()!!} {!! Form :: hidden('token',$ token)!!}

+0

我更新了我的原始問題以反映我使用'Hash :: check()'方法的錯誤。 – SuperNoob

0

如果您使用內置登錄功能,Laravel還會散列您的密碼,因此請檢查您的模型,以防萬一您正在密碼。