我正在尝试进行考虑电子邮件和密码的基本身份验证。当我调用方法Auth :: attempt
时出现问题,我收到以下错误。
模型
class Usuario extends Eloquent{
protected $table = 'Usuario';
protected $primaryKey = 'idUsuario';
protected $fillable = array('Nombre',
'Apellido',
'TipoUsuario',
'Contrasena',
'Correo',
'Telefono');
}
控制器
class UsuarioController extends BaseController{
public function doLogin(){
$rules = array('correo' => 'required|email',
'contrasena' => 'required');
$validator = Validator::make(Input::all(), $rules);
if($validator->fails()){
return Redirect::to('usuario')
->withErrors($validator)// manda los errores al login
->withInput(Input::except('contrasena')); //
}else{
$userData = array(
'Correo' => Input::get('correo'),
'Contrasena' => Input::get('contrasena')
);
if(Auth::attempt($userData)){
echo 'bien';
}else{
return Redirect::to('login');
}
}
}
public function showLogin(){
return View::make('login');
}
}
Routte
Route::get('usuario', array('uses' => 'UsuarioController@showLogin'));
Route::post('usuario', array('uses' => 'UsuarioController@doLogin'));
Auth.php
return array(
'driver' => 'database',
'model' => 'User',
'table' => 'Usuario',
'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),
);
答案 0 :(得分:1)
我要检查以确保您将正确的信息传递给控制器中的Auth :: attempt()。我使用的更像是:
$userData = array('email' => Input::get('email'), 'password' => Input::get('password'));
答案 1 :(得分:1)
在检查用户凭据Laravel
调用validateCredentials
时调用Auth::attempt
方法的过程中,在此函数中(下面给出)Laravel
检查password
在传递的数组中键入,在您的情况下,您没有传递password
键,因此发生错误。
public function validateCredentials(UserInterface $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
更改key
数组中的$userData
:
$userData = array(
'email' => Input::get('correo'), // If correo means email
'password' => Input::get('contrasena') // If contrasena means password
);
同时在数据库表的字段名称中进行更改,代表users
表,我认为它是您的Usuario
表。