...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Mobiilirakenduste autentimine Tokariga Laravelis

14

Kas kasutate Laraveli oma mobiilirakenduse tagatipuks? Kui jah, siis ilmselt otsite lihtsat lahendust oma mobiilirakenduse autentimiseks. Paljud kasutajad võivad teie mobiilirakendust kasutada ja soovite oma mobiilikasutajatele sisu esitamiseks autentida. Selles artiklis uurime, kuidas Laravelis sümboolset autentimist teha. Sama lähenemist saate kasutada ka REST API autentimiseks.

Integreerime Laraveli Sanctumi, mis on kerge autentimissüsteem. Võite seda pidada OAuth-põhise autentimise asendajaks.

Sanctumi kasutamise ajal salvestatakse andmebaasi kasutaja API-märgid. See luba tuleb saata Bearerloana Authorizationpäise kaudu oma mobiilirakendusest Laraveli API lõpp-punktidesse. Nendel märkidel on tavaliselt väga pikk aegumisaeg (aastad).

Sellest hoolimata vaatame, kuidas kasutada Sanctumit mobiilirakenduste autentimiseks.

Installige ja konfigureerige Laraveli pühamu

Alustamiseks peate kõigepealt installima oma Laraveli rakendusse Sanctumi paketi. Installige see käsuga:

composer require laravel/sanctum

Pärast seda avaldage Sanctumi konfiguratsiooni- ja migreerimisfailid, käivitades alloleva käsu.

php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"

Järgmisena käivitage migratsiooni käsk, mis loob personal_access_tokensteie andmebaasi tabeli. See on tabel, kuhu kõik API-märgid salvestatakse.

php artisan migrate

Vaikimisi nõuab iga Laraveli taotlus csrf-märki. Selle csrf-märgi puudumisel ei jätka Laravel teie taotlust. Kui rääkida Sanctumi abil API-märkide genereerimisest, peame csrf-märgi saatmise vahele jätma. Selleks lisage muutujale sanctum/tokenmarsruut. Selle marsruudi koostan järgmistes sammudes.$except``app/Http/Middleware/VerifyCsrfToken.php``sanctum/token

<?php
...
class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'sanctum/token'
    ];
}

Autentimise eesmärgil peame kasutajatele väljastama märgi. Niisiis, peate kasutama kasutajamudeli HasApiTokensomadust järgmiselt.

<?php
 
namespace AppModels;
...
use LaravelSanctumHasApiTokens;
 
class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
    ...
}

API-märkide väljastamine autentimiseks

Igas taotluses koos autoriseerimise päisega kandja loa saatmiseks peab see esmalt välja andma API loa. Kavatsen luua meetodi, mis genereerib igale kasutajale API loa. Loa väljastamiseks peate saatma kasutaja e-posti aadressi, parooli ja seadme.

Lisage allolev marsruut routes/web.php

Route::post('/sanctum/token', 'APITokenController@create_token');

Järgmisena looge kontroller APITokenControllerkäsuga:

php artisan make:controller APITokenController

Määratlege create_token()meetod vastloodud kontrolleris järgmiselt.

<?php
 
namespace AppHttpControllers;
 
use AppModelsUser;
use IlluminateHttpRequest;
use IlluminateSupportFacadesHash;
use IlluminateValidationValidationException;
 
class APITokenController extends Controller
{
    public function create_token(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required',
            'device_name' => 'required',
        ]);
     
        $user = User::where('email', $request->input('email'))->first();
 
        if (! $user ||! Hash::check($request->input('password'), $user->password)) {
            return [
                'error' => 'The provided credentials are incorrect.'
            ];
        }
     
        return $user->createToken($request->input('device_name'))->plainTextToken;
    }
}

Ülaltoodud kood kontrollib kõigepealt kasutaja mandaate. Kui mandaadid on õiged, saadab see vastuseks märgi lihttekstivormingus. Siin saan sisendväärtusi, arvestades, et need saadetakse JSON-i objektina.

Proovige saata POST-taotlus koos kasutaja mandaatidega ja peaksite saama lihtteksti märgi. Seda API-märgist võidakse salvestada mobiilseadmesse ja kasutada päises API-taotluste saatmise ajal.

Minu puhul kasutan VS-koodi Rest Client laiendust ja minu taotlus sanctum/tokenon selline, nagu allpool ekraanipildil näidatud.

Minge andmebaasi ja peaksite nägema, et teie märk on personal_access_tokenstabelisse salvestatud .

Sanctum loob mitu märki alati, kui jõuate sanctum/tokenmarsruudile õigete mandaatidega. Kui soovite eelmise loa tühistada, siis lisage allpool olev lause enne ülaltoodud koodi viimast tagasilauset.

// Revoke previous tokens...
$user->tokens()->delete();
 
return $user->createToken($request->input('device_name'))->plainTextToken;

Lõpuks kaitske marsruute, lisades auth:sanctumvahevara järgmiselt.

Route::middleware('auth:sanctum')->get('/products', function() {
    // write a code
});

Vahevara kontrollib, kas luba saadakse loa päises. Kui API-luba on õige, lubab marsruudi jätkamist ainult see.

Näiteks võite VS-koodis saata API-loa kandja märgina koos päisega Authorization, nagu allpool näidatud.

Loodan, et saate aru, kuidas integreerida mobiilirakenduste autentimine Laraveli märgi abil. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem