2013-05-19 82 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')'。 –