2013-05-19 100 views
0

我嘗試在Laravel 4中創建登錄系統。爲此,我使用Auth構建它。首先,我還沒有創建一個註冊頁面,所以我在我的數據庫中創建了一個用戶。對於密碼,我用無法在Laravel 4中登錄用戶

echo Hash :: make('password');

它給了我一個散列,我粘貼在pass字段。現在,我想登錄的用戶對於這一點,我創建了一個路線:

Route::post('/users/login/try', array('as' => 'loginTry'), function() { 
    $user = array(
     'name' => Input::get('user'), 
     'pass' => Hash::make(Input::get('pass')) 
    ); 

    if(Auth::attempt($user,true)) { 
     return Redirect::intended('dashboard'); 
    } else { 
     return Redirect::to('/users/login'); 
    } 
}); 

和視圖:

{{ Form::open(array('route' => 'loginTry')) }} 
<p>{{ Form::label('user','Nazwa użytkownika') }} {{ Form::text('user') }}</p> 
<p>{{ Form::label('pass','Hasło') }} {{ Form::password('pass') }}</p> 
<p>{{ Form::submit('Zaloguj') }}</p> 
{{ Form::close() }} 

當我嘗試提交表單,我得到

call_user_func_array() expects parameter 1 to be a valid callback, no array or string given 

我做錯了什麼?

+0

刪除Hash :: make。 Auth :: attempt會自動添加它。 – Aristona

+0

謝謝。雖然沒有幫助。 –

+1

看看Named Routes部分。 (http://four.laravel.com/docs/routing)你的回調必須在數組內,而不是第三個參數。 – Aristona

回答

7

您將回調作爲第三個參數。將它移入數組中,它將工作。

Route::post('/users/login/try', array('as' => 'loginTry', function() { 
    //Your callback code here. 
})); 
+0

工作!但我無法登錄,我的意思是,它的行爲就像密碼不匹配。但它應該。 –

+0

你是否從'pass'中刪除了Hash :: make? – Aristona

+0

是的。現在是'pass'=> Input :: get('pass')'。 –