簡體   English   中英

如何在laravel中使用我自己的類進行身份驗證?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM