Sortu REST API bat autentikazioarekin Laravel erabiliz 2.atala

Egungo PHP framework ezagunenetakoa den Laravel-i buruzko artikulu-sortaren bigarren sarrera duzu hau.

Aurreko atalean, Laravel aplikazio baten oinarrizko egitura sortzen ikasi genuen, eta datu-base batekin konektatu, taulak populatu eta funtsezko CRUD operatiba jasateko bide izenak eta oinarrizko kontrolatzaileak ezarri genituen.

Artikulu sorta honen helburua Laravel 5.5 erabiliz autentikazioa izango duen REST API bat eraikitzen ikastea da. Horretarako Composer, PHP pakete eta menpekotasunen kudeatzailea, eta Artisan, Laravel-ekin batera datorren komando-interpretatzailerako interfazea erabiliko ditugu.

Atal hau jarraitu eta REST API eraikitzeko beharrezkoa den eta gida honetan agertzen den kode guztia GitHub-en dago eskuragarri.

EDUKIA

Bigarren artikulu honetan puntu hauek ikusiko ditugu:

API AUTENTIKAZIOA LARAVEL-EN

Bide anitz daude Laravel-en API Autentikazioa inplementatzeko, horietako bat Passport da (OAuth2 inplementatzeko modu erraz bat), baina artikulu honetan beste bide sinpleago bat erabiliko dugu.

Esquema general autenticación API
API autentikazioa: eskema orokorra

Hasteko, ‘api_token‘ eremu berria gehituko diogu ‘users‘ taulari:

$ php artisan make:migration --table=users adds_api_token_to_users_table

Ondoren, migrazioa inplementatuko dugu sortu berri den ‘./laravel-api/database/migrations/2017_10_31_162358_adds_api_token_to_users_table.php‘ fitxategian:

Gero migrazioa exekutatuko dugu:

$ php artisan migrate

Eta eremu berria sortuko da datu-basean:

Tabla de Usuarios con token
“Erabiltzaileak” Taula, ‘token’ eremu berriarekin

ERABILTZAILE BERRI BAT ERREGISTRATZEA

./laravel-api/app/Http/Controllers/Auth/ bidean dagoen RegisterController kontrolatzailea erabiliko dugu erregistratzeko eskaerei erantzuteko.

Kontrolatzaileak ‘RegisterUsers‘ ezaugarria erabiltzen du erregistroa inplementatzeko. Horrela funtzionatzen du:

public function register(Request $request)
{
    // Here the request is validated.
    // The validator method is located inside the
    // RegisterController, and makes sure the name, email
    // password and password_confirmation fields are required.
    $this->validator($request->all())->validate();

    // A Registered event is created and will trigger any relevant
    // observers, such as sending a confirmation email or any
    // code that needs to be run as soon as the user is created.
    event(new Registered($user = $this->create($request->all())));

    // After the user is created, he's logged in.
    $this->guard()->login($user);

    // And finally this is the hook that we want. If there is no
    // registered() method or it returns null, redirect him to
    // some other URL. In our case, we just need to implement
    // that method to return the correct response.
    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}

registered()‘ metodoa kontrolatzailean bertan implementatuko dugu. Metodoak $request eta $user parametroak jasoko ditu:

Eta bide izenen fitxategian lotuko dugu (./laravel-api/routes/api.php):

Route::post('register', 'Auth\RegisterController@register');

registered()‘ metodotik Erabiltzailea-ren ‘generateToken()‘ metodoa deitu dugu token-a sortzeko. Erabiltzailea-ren modeloari txertatuko diogu (laravel-api/app/User.php):

Eta badago. Erabiltzailea badago erregistratuta, eta Laravel-ek dakarren balidazio-sistema-ri esker ‘name‘, ‘email‘, ‘password‘ eta ‘password_confirmation‘ eremuak automatikoki eskatuko dira.

Momentu honetan, gure API-ren bide izenari beharrezkoak diren parametroak bidaltzen badizkiogu, token bat itzuliko digu:

[POST] http://localhost:8080/api/register

Postman Register
Postman Register

ERABILTZAILEAREN IDENTIFIKAZIOA

Aurreko puntuan bezala, login-kontrolatzailea (./laravel-api/app/Http/Controllers/Auth/LoginController.php) editatu beharko dugu autentikazio-euskarria gehitzeko. Kontrolatzaileak AuthenticateUsers-etik oinordetzan jaso duen ‘login‘ metodoa gainidatzi beharko dugu:

Eta bide izenen fitxategian lotuko dugu (./laravel-api/routes/api.php):

Route::post('login', 'Auth\LoginController@login');

API-ren deia probatuko dugu:

[POST] http://localhost:8000/api/login
Postman Login
Postman Login

token-a API-ari egindako edozein eskaeratan txertatzeko, eskaeraren goiburuetan egingo dugu, “bearer token” bezala:

Authorization: Bearer rFObzPd5IYNlowBNUPdOrpIyu1dMILQV2NtFK8l8sDhdv0BaaYPcgSRL6SqZ

SAIOA IXTEA

Saioaren amaiera inplementatzeko, datu-basean token-a ezabatuko duen ‘logout()‘ metodoa gehituko diogu login kontrolatzaileari (./laravel-api/app/Http/Controllers/Auth/LoginController.php):

Eta bide izenen fitxategian lotuko dugu (./laravel-api/routes/api.php):):

Route::post('logout', 'Auth\LoginController@logout');

Modu honetan, behin deskonektatuta erabiltzaileak bidalitako edozein token-a baliogabea izango da. Horretarako ‘middleware‘ erabiliko ditugu, hurrengo puntuan ikusiko dugun bezala.

Honek guztiak bezero-aplikazioarekin koordinatuta egon behar du erabiltzaileak sarbiderik gabe identifikatuta jarraitzea ekiditeko.

MIDDLEWARE ERABILTZEA SARBIDEA MURRIZTEKO

Middleware bat Laravel-ek bere 5.bertsiotik gure aplikaziora iristen diren HTTP eskaerak filtratzeko dakarren mekanismo bat da.

Middleware-en erabilera oso ohiko da aplikazioen erabiltzaileen autentikazioan, eskaera bat egin duen erabiltzailea identifikatuta dagoen eta baimena duen egiaztatzeko. Horretaz gain, erantzunetan goiburuak txertatu, log-ak egin edota balizko erasoen aurrean babesteko ere erabili daitezke, besteak beste.

Gure API-ren bide izenei autentikazio-middleware bat txertatzeko, bide-izen talde bate barruan habiatu behar ditugu, hemen ikus daitekeen moduan:

GET eskaera baten bidez artikulu guztiak berreskuratu nahiko bagenu:

[GET] http://localhost:8000/api/articles

Akats hau iritsiko litzaiguke bueltan:

Route [login] not defined.
Postman Middleware
Postman Middleware

Salbuespen-kudeatzailearen ‘unauthenticated()‘ metodoa definitu behar dugu (./laravel-api/app/Exceptions/Handler.php), JSON goiburu zuzen bat itzul dezan:

Eta orain eskaerak HTML kode egokiago bat itzuliko du:

Postman Middleware
Postman Middleware

LABURPENA

Sortu REST API bat autentikazioa Laravel erabiliz” bildumaren bigarren artikulu honetan erabiltzaileak autentikatzeko metodo xume bat inplementatzen ikasi dugu gure API-n erabiltzaileak erregistratu, identifikatu eta deskonektatu ahal izateko. Horretaz gain, middleware-ak erabiltzeko sarrera egin dugu, eta identifikatuta ez dauden erabiltzaileen sarrera ekiditeko oso baliagarriak izan daitezkeela ikusi dugu.

Hurrengo artikuluan unitate-probak egiten hasiko gara, eta horretarako gure API-a PHPUnit-ekin integratzen ikasiko dugu. Proba hauen helburua gure aplikazioaren arlo bakoitzaren funtzionamendu zuzena egiaztatu, eta arazoak garapenaren hasierako faseetan identifikatzea da.

Edozein zalantza edo arazo baldin baduzu urratsaren bat ulertzeko, utzi iruzkin batean eta erantzungo dizut. Eta dagoeneko eskarmentua baldin badaukazu REST API-ak egiten edo Laravel erabiltzen, partekatu zure esperientzia eta artikulu honi buruzko iritzia komentario bat utziz. Ikasi dezagun elkarrekin!

Software LibreaWeb Garapena