✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka käyttää Laravel Passportia REST API -todennukseen

21

Nykypäivän verkkokehityksessä sovellusliittymät tai verkkopalvelut ovat erittäin suosittuja. Kehittäessään mobiilisovellusta API: lla on yhteys sillan siirtämiseen dataan mobiilisovelluksen ja verkon välillä. API-puheluiden pitäminen turvallisina ja todennettuna on tärkeää sovellusten välillä siirrettävien tietojen suojaamiseksi.

Tässä artikkelissa tutkitaan Laravel Passportia, jonka avulla voimme todentaa sovellusliittymiä. Passport on rakennettu OAuth2-palvelimen päälle, mikä on paljon turvallisempi tapa rakentaa.

Käsitellessämme sovellusliittymiä käytimme pääsykoodin lähettämistä varmistaaksemme, että saapuva pyyntö on kelvollinen. Jos se on valtuutettu, vain sen tulisi sallia vuorovaikutus sovelluksen kanssa. Laravel-passi tarjoaa kätevän tavan luoda ja tarkistaa tunniste API-kutsua vastaan.

Asennus

Aloittamiseksi oletamme, että olet asentanut Laravelin järjestelmääsi. Asenna Passport suorittamalla seuraava komento terminaalissa.

composer require laravel/passport

Yllä oleva komento toimii Laravelin uusimman version kanssa. Jos käytät vanhempaa versiota, komento on hieman erilainen Laravel-versiostasi riippuen. Esimerkiksi, jos Laravel 5.5 on asennettu, komennosi tulisi olla:

composer require laravel/passport=~4.0

Tämä komento luo oman tietokannan siirtohakemiston. Nämä siirrot luovat taulukoita, jotka tallentavat asiakkaita ja käyttöoikeustunnuksia.

Rekisteröi config/app.phptiedostossasi Passport-palveluntarjoaja palveluntarjoajien ryhmään.

config / app.php

'providers' =>[
  ....
  LaravelPassportPassportServiceProvider::class,
],

Suoritetaan siirto, joka luo Passport-tietokantataulukot.

php artisan migrate

Jos siirryt nyt tietokantaasiakkaaseen, huomaat tietokantaan luodut uudet taulukot.

Kuinka käyttää Laravel Passportia REST API -todennukseen

Suorita seuraavaksi alla oleva komento, joka luo salausavaimet suojattujen pääsykoodien luomiseksi. Alla oleva komento luo "henkilökohtaisen käyttöoikeuden" ja "salasanan myöntäminen" -asiakkaat, jotka ovat tallessa taulukkoon oauth_clients.

php artisan passport:install

Kuinka käyttää Laravel Passportia REST API -todennukseen

Käyttäjä voi kopioida nämä tunnukset seuraavia vaiheita varten. Oikeastaan ​​aiomme nähdä kaksi tapaa luoda käyttöoikeustunnuksia. Yksi on tämän "salasanan myöntämisen" asiakkaiden kautta ja toinen kirjautumistodennuksessa.

Passin kokoonpano

Siirry Laravel-hakemistoihin ja avaa AppUsermallitiedosto. Tähän tiedostoon meidän on lisättävä LaravelPassportHasApiTokenspiirre.

app / User.php.

<?php
 
namespace App;
 
use LaravelPassportHasApiTokens;
use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;
 
class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    ....
}

Tämän jälkeen meidän on kutsuttava Passport::routesmetodi bootmenetelmässä AuthServiceProvider.

app / Providers / AuthServiceProvider.php

<?php
 
namespace AppProviders;
 
use LaravelPassportPassport;
use IlluminateSupportFacadesGate;
use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
 
class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'AppModel' => 'AppPoliciesModelPolicy',
    ];
 
    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
 
        Passport::routes();
    }
}

Viimeinkin config/auth.phpmääritä tiedostossa ‘api’ -todennusvalvojan ‘driver’ -vaihtoehdoksi ‘passport’ seuraavasti:

config / auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
 
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

Luo REST-sovellusliittymä ja suojaa se Laravel Passportilla

Laravel luo tiedoston, routes/api.phpjohon meidän tulisi ilmoittaa REST-sovellusliittymien päätepiste. Voimme suojata sovellusliittymäämme lisäämällä siihen väliohjelmiston auth:api.

reitit / api.php

Route::get('/api/categories', 'ApiController@categories')->middleware('auth:api');

Useita päätepisteitä varten meidän ei tarvitse lisätä väliohjelmistoa joka kerta. Sen sijaan voimme tehdä sen seuraavasti:

Route::group(['middleware' => 'auth:api'], function(){
    Route::get('products', 'ApiController@products');
    Route::get('categories', 'ApiController@categories');
});

Koska päätetapahtumamme ‘tuotteet’ on suojattu, jos kutsumme sitä suoraan ilman valtuutusmerkkiä, saamme ‘todentamattoman’ vastauksen.

Kuinka käyttää Laravel Passportia REST API -todennukseen

Se tarkoittaa, että API-kutsun aikana on välttämätöntä välittää Valtuutus-tunnus jokaisessa pyynnössä. Joten Passport tarkistaa tunnuksen ja palauttaa vastauksen.

Luo käyttöoikeustunnus API: lle

On olemassa useita tapoja luoda käyttötunnus sovellukselle. Näemme 2 heistä tälle opetusohjelmalle.

Ensimmäinen vaihtoehto

Ensinnäkin joudut soittamaan / oauth / token vaadituilla parametreilla, ja saat tunnuksen vastauksena.

Oletamme, että käytät Guzzlen HTTP-kirjastoa API-pyynnön tekemiseen. Oletetaan, että sinulla on toinen projekti, josta teet API-pyynnön.

<?php
require_once "vendor/autoload.php";
 
use GuzzleHttpClient;
 
$client = new Client([
    // Base URI is used with relative requests
    'base_uri' => 'http://laravel.dev',
]);
 
$response = $client->post('/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => '2',
        'client_secret' => '8qyKG7WKb3O3FZh2hUyEOZ3dAj5l9S5ljn2bdeJf',
        'username' => '[email protected]',
        'password' => 'my_password',
        'scope' => '*',
    ],
]);
 
$arr_result = json_decode((string) $response->getBody(), true);

Yllä oleva koodi palauttaa taulukon, joka sisältää avaimen ‘access_token’. Parametrit client_id ja client_secret saimme suoritettaessa passport:install. Voit myös saada nämä tiedot tietokantataulukostasi ‘oauth_clients’.

Yritä jälleen postimieheltä siirtämällä access_token ‘tuotteet’ -päätteelle, ja meidän pitäisi saada vastaus.

Kuinka käyttää Laravel Passportia REST API -todennukseen

Itse asiassa sinun on kutsuttava tätä sovellusliittymää kuten alla:

$response = $client->get('/products', [
    'headers' => [
        'Authorization' => 'Bearer '.$access_token,
    ]
]);
 
$arr_result = json_decode((string) $response->getBody(), true);

Toinen vaihtoehto

Ensimmäisessä vaihtoehdossa sinun on tiedettävä client_id ja client_secret tunnuksen luomiseksi. Tämä ei välttämättä ole sopiva tapa joissakin tilanteissa. Passport tarjoaa toisen vaihtoehdon luoda tunnuksen vain kirjautumistiedoilla.

Meidän ApiController.phplisätä sisäänkirjautumismenettely post pyynnön ja kirjoittaa alla koodi sitä.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use IlluminateSupportFacadesStorage;
use IlluminateSupportFacadesAuth;
 
class ApiController extends Controller
{
    public function login(){ 
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
            $user = Auth::user(); 
            $success['token'] =  $user->createToken('MyApp')-> accessToken; 
            return response()->json(['success' => $success], 200); 
        } 
        else{ 
            return response()->json(['error'=>'Unauthorised'], 401); 
        } 
    }

Tämän API-puhelun soittamiseksi meidän on rekisteröitävä reitti sille.

reitit / api.php

Route::post('login', 'ApiController@login');

Käyttäjä voi tehdä HTTP-lähetyspyynnön tälle API: lle kirjoittamalla alla olevan koodin:

$response = $client->post('/api/login', [
    'form_params' => [
        'email' => '[email protected]',
        'password' => 'my_password'
    ],
]);
 
$arr_result = json_decode((string) $response->getBody(), true);

Kuinka käyttää Laravel Passportia REST API -todennukseen

Toivomme, että ymmärrät Laravel Passportin käytön REST API -todennuksessa. Haluamme kuulla ajatuksesi alla olevassa kommenttiosassa. Suosittelemme myös tutustumaan artikkeliin Laravel API Tutorial: How to build and Test RESTful API, jonka pidimme hyödyllisenä lukijoille.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja