{"id":24062,"date":"2021-05-11T13:31:00","date_gmt":"2021-05-11T10:31:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24062"},"modified":"2021-10-18T02:45:11","modified_gmt":"2021-10-17T23:45:11","slug":"so-verwenden-sie-laravel-passport-fuer-die-rest-api-authentifizierung","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-verwenden-sie-laravel-passport-fuer-die-rest-api-authentifizierung\/","title":{"rendered":"So verwenden Sie Laravel Passport f\u00fcr die REST-API-Authentifizierung"},"content":{"rendered":"<p>In der heutigen Webentwicklung sind APIs oder Webservices sehr beliebt. Bei der Entwicklung einer mobilen Anwendung spielt die API eine Rolle als Br\u00fccke zur Weitergabe von Daten zwischen der mobilen Anwendung und dem Web. Es ist wichtig, APIs-Aufrufe sicher und authentifiziert zu halten, um die Daten zu sch\u00fctzen, die zwischen Anwendung zu Anwendung \u00fcbertragen werden.<\/p>\n<p>In diesem Artikel besch\u00e4ftigen wir uns mit Laravel Passport, mit dem wir APIs authentifizieren k\u00f6nnen. Passport ist auf dem OAuth2-Server aufgebaut, der viel sicherer ist.<\/p>\n<p>Beim Umgang mit den APIs haben wir fr\u00fcher ein Zugriffstoken gesendet, um zu \u00fcberpr\u00fcfen, ob die eingehende Anfrage g\u00fcltig ist. Wenn es autorisiert ist, sollte es nur die Interaktion mit der Anwendung zulassen. Der Laravel-Pass bietet eine bequeme M\u00f6glichkeit, Token f\u00fcr den API-Aufruf zu erstellen und zu \u00fcberpr\u00fcfen.<\/p>\n<h3>Installation<\/h3>\n<p>F\u00fcr den Einstieg gehen wir davon aus, dass Sie Laravel auf Ihrem System installiert haben. Um den Passport zu installieren, f\u00fchren Sie den folgenden Befehl im Terminal aus.<\/p>\n<pre><code>composer require laravel\/passport<\/code><\/pre>\n<p>Der obige Befehl w\u00fcrde mit der neuesten Version von Laravel funktionieren. Wenn Sie eine \u00e4ltere Version verwenden, unterscheidet sich der Befehl je nach Laravel-Version geringf\u00fcgig. Wenn beispielsweise Laravel 5.5 installiert ist, sollte Ihr Befehl lauten:<\/p>\n<pre><code>composer require laravel\/passport=~4.0<\/code><\/pre>\n<p>Dieser Befehl erstellt ein eigenes Datenbankmigrationsverzeichnis. Bei diesen Migrationen werden Tabellen erstellt, in denen die Clients und Zugriffstoken gespeichert werden.<\/p>\n<p><code>config\/app.php<\/code>Registrieren Sie in Ihrer Datei den Passport-Dienstanbieter im Anbieter-Array.<\/p>\n<p>config\/app.php<\/p>\n<pre><code>'providers' =&gt;[\n\u00a0\u00a0....\n\u00a0\u00a0LaravelPassportPassportServiceProvider::class,\n],<\/code><\/pre>\n<p>Lassen Sie uns die Migration ausf\u00fchren, die die Datenbanktabellen f\u00fcr Passport erstellt.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Wenn Sie jetzt zu Ihrem Datenbankclient gehen, werden Sie die neuen Tabellen bemerken, die in Ihrer Datenbank erstellt wurden.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f24e4c0.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f24e4c0.png\" alt=\"So verwenden Sie Laravel Passport f\u00fcr die REST-API-Authentifizierung\" ><\/a><\/p>\n<p>F\u00fchren Sie als N\u00e4chstes den folgenden Befehl aus, der Verschl\u00fcsselungsschl\u00fcssel erstellt, um sichere Zugriffstoken zu generieren. Der folgende Befehl erstellt Clients mit \u201epers\u00f6nlichem Zugriff&#8220; und \u201ePassworterteilung&#8220;, die in der Tabelle gespeichert werden <code>oauth_clients<\/code>.<\/p>\n<pre><code>php artisan passport:install<\/code><\/pre>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"So verwenden Sie Laravel Passport f\u00fcr die REST-API-Authentifizierung\" ><\/a><\/p>\n<p>Der Benutzer kann diese Token f\u00fcr die n\u00e4chsten Schritte kopieren. Tats\u00e4chlich werden wir zwei M\u00f6glichkeiten zum Erstellen von Zugriffstoken sehen. Einer erfolgt \u00fcber diese \u201ePasswortgew\u00e4hrung&#8220;-Clients und ein anderer \u00fcber die Anmeldeauthentifizierung.<\/p>\n<h3>Passkonfiguration<\/h3>\n<p>Gehen Sie zu den Laravel-Verzeichnissen und \u00f6ffnen Sie die <code>AppUser<\/code>Modelldatei. In dieser Datei m\u00fcssen wir ein <code>LaravelPassportHasApiTokens<\/code>Merkmal hinzuf\u00fcgen .<\/p>\n<p><strong>app\/User.php<\/strong>.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace App;\n\u00a0\nuse LaravelPassportHasApiTokens;\nuse IlluminateNotificationsNotifiable;\nuse IlluminateFoundationAuthUser as Authenticatable;\n\u00a0\nclass User extends Authenticatable\n{\n\u00a0\u00a0\u00a0\u00a0use HasApiTokens, Notifiable;\n\u00a0\u00a0\u00a0\u00a0....\n}<\/code><\/pre>\n<p>Danach m\u00fcssen wir die <code>Passport::routes<\/code>Methode in der <code>boot<\/code>Methode von aufrufen <code>AuthServiceProvider<\/code>.<\/p>\n<p><strong>app\/Provider\/AuthServiceProvider.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppProviders;\n\u00a0\nuse LaravelPassportPassport;\nuse IlluminateSupportFacadesGate;\nuse IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;\n\u00a0\nclass AuthServiceProvider extends ServiceProvider\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The policy mappings for the application.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var array\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $policies = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'AppModel' =&gt; 'AppPoliciesModelPolicy',\n\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Register any authentication \/ authorization services.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function boot()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;registerPolicies();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Passport::routes();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p><code>config\/auth.php<\/code>Setzen Sie zuletzt in der Datei die Option &#8218;driver&#8216; des &#8218;api&#8216;-Authentifizierungsw\u00e4chters wie folgt auf &#8218;passport&#8216;:<\/p>\n<p><strong>config\/auth.php<\/strong><\/p>\n<pre><code>'guards' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'web' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'session',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; 'users',\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\n\u00a0\u00a0\u00a0\u00a0'api' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'passport',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; 'users',\n\u00a0\u00a0\u00a0\u00a0],\n],<\/code><\/pre>\n<h3>Erstellen Sie eine REST-API und sch\u00fctzen Sie sie mit Laravel Passport<\/h3>\n<p>Laravel erstellt eine Datei, <code>routes\/api.php<\/code>in der wir unseren REST-APIs-Endpunkt deklarieren sollten. Wir k\u00f6nnen unsere API sch\u00fctzen, indem wir ihr die Middleware hinzuf\u00fcgen <code>auth:api<\/code>.<\/p>\n<p><strong>routen\/api.php<\/strong><\/p>\n<pre><code>Route::get('\/api\/categories', 'ApiController@categories')-&gt;middleware('auth:api');<\/code><\/pre>\n<p>F\u00fcr mehrere Endpunkte m\u00fcssen wir nicht jedes Mal Middleware hinzuf\u00fcgen. Stattdessen k\u00f6nnen wir es wie folgt machen:<\/p>\n<pre><code>Route::group(['middleware' =&gt; 'auth:api'], function(){\n\u00a0\u00a0\u00a0\u00a0Route::get('products', 'ApiController@products');\n\u00a0\u00a0\u00a0\u00a0Route::get('categories', 'ApiController@categories');\n});<\/code><\/pre>\n<p>Da unser Endpunkt \u201eProdukte&#8220; gesch\u00fctzt ist, wenn wir ihn direkt ohne Autorisierungstoken aufrufen, erhalten wir die Antwort \u201eNicht authentifiziert&#8220;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"So verwenden Sie Laravel Passport f\u00fcr die REST-API-Authentifizierung\" ><\/a><\/p>\n<p>Das bedeutet, dass beim Aufrufen der API unbedingt das Autorisierungstoken in jeder Anfrage \u00fcbergeben werden muss. Passport \u00fcberpr\u00fcft also das Token und gibt die Antwort zur\u00fcck.<\/p>\n<h3>Zugriffstoken f\u00fcr API generieren<\/h3>\n<p>Es gibt mehrere M\u00f6glichkeiten, ein Zugriffstoken f\u00fcr die Anwendung zu erstellen. Wir werden 2 davon f\u00fcr dieses Tutorial sehen.<\/p>\n<h4>Erste Wahl<\/h4>\n<p>Als erstes m\u00fcssen Sie \/oauth\/token mit den erforderlichen Parametern aufrufen und Sie erhalten den Token als Antwort.<\/p>\n<p>Wir gehen davon aus, dass Sie eine <a href=\"https:\/\/themewp.inform.click\/de\/so-verwenden-sie-guzzle-ein-php-http-client-zum-senden-von-http-anfragen\/\" title=\"Guzzle-HTTP-Bibliothek verwenden,\" >Guzzle-HTTP-Bibliothek verwenden,<\/a> um API-Anfragen zu stellen. Angenommen, Sie haben ein anderes Projekt, von dem aus Sie eine API-Anfrage stellen.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse GuzzleHttpClient;\n\u00a0\n$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'http:\/\/laravel.dev',\n]);\n\u00a0\n$response = $client-&gt;post('\/oauth\/token', [\n\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'grant_type' =&gt; 'password',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; '2',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; '8qyKG7WKb3O3FZh2hUyEOZ3dAj5l9S5ljn2bdeJf',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; 'sajid@test.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'my_password',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'scope' =&gt; '*',\n\u00a0\u00a0\u00a0\u00a0],\n]);\n\u00a0\n$arr_result = json_decode((string) $response-&gt;getBody(), true);<\/code><\/pre>\n<p>Der obige Code gibt ein Array zur\u00fcck, das einen Schl\u00fcssel &#8218;access_token&#8216; enth\u00e4lt. Die Parameter client_id und client_secret haben wir beim Ausf\u00fchren erhalten <code>passport:install<\/code>. Sie k\u00f6nnen diese Details auch Ihrer Datenbanktabelle &#8218;oauth_clients&#8216; entnehmen.<\/p>\n<p>Versuchen Sie es erneut vom Postboten, indem Sie das access_token an den Endpunkt &#8218;products&#8216; \u00fcbergeben, und wir sollten die Antwort erhalten.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"So verwenden Sie Laravel Passport f\u00fcr die REST-API-Authentifizierung\" ><\/a><\/p>\n<p>Tats\u00e4chlich m\u00fcssen Sie diese API wie folgt aufrufen:<\/p>\n<pre><code>$response = $client-&gt;get('\/products', [\n\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Authorization' =&gt; 'Bearer '.$access_token,\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\n$arr_result = json_decode((string) $response-&gt;getBody(), true);<\/code><\/pre>\n<h4>Zweite Option<\/h4>\n<p>Bei der ersten Option sollten Sie client_id und client_secret kennen, um Ihr Token zu generieren. Dies ist in einigen Szenarien m\u00f6glicherweise nicht bequem. Passport bietet eine weitere Option zum Generieren von Zugriffstoken nur \u00fcber die Anmeldeinformationen.<\/p>\n<p>F\u00fcgen <code>ApiController.php<\/code>Sie in unserem die Login-Methode mit Post-Request hinzu und schreiben Sie den folgenden Code hinein.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesStorage;\nuse IlluminateSupportFacadesAuth;\n\u00a0\nclass ApiController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function login(){ \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(Auth::attempt(['email' =&gt; request('email'), 'password' =&gt; request('password')])){ \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = Auth::user(); \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$success['token'] =\u00a0 $user-&gt;createToken('MyApp')-&gt; accessToken; \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return response()-&gt;json(['success' =&gt; $success], 200); \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else{ \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return response()-&gt;json(['error'=&gt;'Unauthorised'], 401); \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \n\u00a0\u00a0\u00a0\u00a0}<\/code><\/pre>\n<p>Um diesen API-Aufruf zu t\u00e4tigen, m\u00fcssen wir eine Route daf\u00fcr registrieren.<\/p>\n<p><strong>routen\/api.php<\/strong><\/p>\n<pre><code>Route::post('login', 'ApiController@login');<\/code><\/pre>\n<p>Der Benutzer kann eine HTTP-Post-Anfrage an diese API senden, indem er den folgenden Code schreibt:<\/p>\n<pre><code>$response = $client-&gt;post('\/api\/login', [\n\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; 'sajid@test.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'my_password'\n\u00a0\u00a0\u00a0\u00a0],\n]);\n\u00a0\n$arr_result = json_decode((string) $response-&gt;getBody(), true);<\/code><\/pre>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"So verwenden Sie Laravel Passport f\u00fcr die REST-API-Authentifizierung\" ><\/a><\/p>\n<p>Wir hoffen, dass Sie die Verwendung von Laravel Passport f\u00fcr die REST-API-Authentifizierung verstanden haben. Wir w\u00fcrden gerne Ihre Meinung im Kommentarbereich unten h\u00f6ren. Wir empfehlen auch, den Artikel <a href=\"https:\/\/www.toptal.com\/laravel\/restful-laravel-api-tutorial\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel API Tutorial: How to Build and Test a RESTful API durchzugehen,<\/a> den wir f\u00fcr die Leser als n\u00fctzlich empfanden.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie Laravel Passport in Ihrer Anwendung implementieren? In diesem Artikel zeigen wir ypu, wie man Passport installiert, konfiguriert und verwendet.<\/p>\n","protected":false},"author":1,"featured_media":22200,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[496],"tags":[845],"class_list":["post-24062","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=24062"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24062\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/22200"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=24062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=24062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=24062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}