✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur man använder Laravel Passport för REST API-autentisering

27

I dagens webbutveckling är API: er eller webbtjänster mycket populära. Medan utvecklingen av en mobilapplikation spelar API en roll för att överföra data mellan mobilapplikation och webb. Att hålla API: er samtalsäkra och autentiserade är viktigt för att skydda data som överförs mellan applikation till applikation.

I den här artikeln studerar vi om Laravel Passport som gör det möjligt för oss att autentisera API: er. Pass är byggt på toppen av OAuth2-servern vilket är mycket säkrare på det sätt som det bygger.

När vi hanterade API: n skickade vi en åtkomsttoken för att verifiera om den inkommande begäran är giltig. Om det är auktoriserat bör endast det tillåta interaktion med applikationen. Laravel pass ger ett bekvämt sätt att skapa och verifiera token mot API-samtalet.

Installation

För att komma igång antar vi att du har installerat Laravel på ditt system. För att installera passet, kör kommandot nedan i terminalen.

composer require laravel/passport

Ovanför kommandot skulle fungera med den senaste versionen av Laravel. Om du kör äldre version kommer kommandot att vara något annorlunda beroende på din Laravel-version. Till exempel, om har Laravel 5.5 installerat bör ditt kommando vara:

composer require laravel/passport=~4.0

Detta kommando skapar en egen databasmigreringskatalog. Dessa migreringar skapar tabeller som lagrar klienterna och åtkomsttoken.

config/app.phpRegistrera Passport-tjänsteleverantören i din fil i leverantörsarrangemanget.

config / app.php

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

Låt oss köra migreringen som skapar databastabellerna för Passport.

php artisan migrate

Nu, om du går till din databasklient, kommer du att märka de nya tabellerna som skapats i din databas.

Hur man använder Laravel Passport för REST API-autentisering

Kör sedan kommandot nedan som skapar krypteringsnycklar för att generera säker åtkomsttoken. Kommandot nedan skapar “personlig åtkomst" och “lösenordstilldelning” -klienter som lagras i tabellen oauth_clients.

php artisan passport:install

Hur man använder Laravel Passport för REST API-autentisering

Användaren kan kopiera dessa tokens för nästa steg. Egentligen kommer vi att se två sätt att skapa åtkomsttoken. Det ena är genom detta "lösenord bevilja" klienter och en annan är på inloggningsautentisering.

Passkonfiguration

Gå till Laravel-katalogerna och öppna AppUsermodellfilen. I den här filen måste vi lägga till LaravelPassportHasApiTokensegenskaper.

app / User.php.

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

Efter detta måste vi anropa Passport::routesmetoden i bootmetoden för 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();
    }
}

Äntligen, i config/auth.phpfilen ställer du in ‘drivrutinsalternativet för’ api ‘autentiseringsvakt till’ pass ‘enligt följande:

config / auth.php

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

Skapa REST API och skydda det med Laravel Passport

Laravel skapar en fil routes/api.phpdär vi ska deklarera våra REST API: er slutpunkt. Vi kan skydda vårt API genom att lägga till middleware auth:apitill det.

rutter / api.php

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

För flera slutpunkter behöver vi inte lägga till mellanprogram varje gång. Istället kan vi göra det enligt följande:

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

Eftersom våra slutpunkter "produkter" är skyddade om vi kallar det direkt utan auktoriseringstoken får vi ett "obehörigt" svar.

Hur man använder Laravel Passport för REST API-autentisering

Det betyder att när du ringer till API är det viktigt att skicka auktoriseringstoken i varje begäran. Så, Passport kommer att verifiera token och returnera svaret.

Skapa åtkomsttoken för API

Det finns flera sätt att skapa en åtkomsttoken för applikationen. Vi kommer att se 2 av dem för denna handledning.

Första alternativet

På ett första sätt måste du ringa till / oauth / token med nödvändiga parametrar och du får token som svar.

Vi antar att du använder ett Guzzle HTTP-bibliotek för att göra API-begäran. Låt oss säga att du har ett annat projekt från vilket du gör API-begäran.

<?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);

Ovan kod returnerar en matris som innehåller nyckeln ‘access_token’. Parametrarna client_id och client_secret vi fick när vi kör passport:install. Du kan också få dessa uppgifter från din databastabell ‘oauth_clients’.

Försök igen från brevbäraren genom att skicka access_token till slutproduktens ” slutpunkt ” så ska vi få svaret.

Hur man använder Laravel Passport för REST API-autentisering

I själva verket måste du ringa detta API som nedan:

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

Andra alternativet

I det första alternativet bör du känna till client_id och client_secret för att generera din token. Detta kan inte vara ett bekvämt sätt i vissa scenarier. Passport ger ett annat alternativ att generera åtkomsttoken endast genom inloggningsuppgifter.

I vår ApiController.phplägga till inloggningsmetod med post begäran och skriva under koden i den.

<?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); 
        } 
    }

För att göra detta API-samtal måste vi registrera en rutt för det.

rutter / api.php

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

Användaren kan göra en HTTP-postförfrågan till detta API genom att skriva koden nedan:

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

Hur man använder Laravel Passport för REST API-autentisering

Vi hoppas att du förstår användningen av Laravel Passport för REST API-autentisering. Vi vill höra dina tankar i kommentarfältet nedan. Vi rekommenderar också att du går igenom artikeln Laravel API Tutorial: Hur man bygger och testar ett RESTful API som vi tyckte var användbart för läsare.

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer