[英]How I can make authentication using my own class in laravel?
我正在嘗試進行考慮電子郵件和密碼的基本身份驗證。 當我調用方法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,
),
);
我會檢查以確保您將正確的信息傳遞給控制器中的Auth :: attempt()。 我使用更像的東西:
$userData = array('email' => Input::get('email'), 'password' => Input::get('password'));
在檢查用戶憑據的過程中, Laravel
調用Auth::attempt
時調用validateCredentials
方法,並且在此函數中(如下所示) Laravel
檢查傳遞的數組中的password
密鑰,在您的情況下,您沒有傳遞password
密鑰,因此錯誤發生。
public function validateCredentials(UserInterface $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
更改$userData
數組中的key
:
$userData = array(
'email' => Input::get('correo'), // If correo means email
'password' => Input::get('contrasena') // If contrasena means password
);
還可以在數據庫表的字段名稱中進行更改,這些字段名稱代表users
表,我認為這是您的Usuario
表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.