{"id":25467,"date":"2021-06-08T18:02:00","date_gmt":"2021-06-08T15:02:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25467"},"modified":"2021-10-18T02:33:11","modified_gmt":"2021-10-17T23:33:11","slug":"authentifizierung-mobiler-anwendungen-mit-token-in-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/authentifizierung-mobiler-anwendungen-mit-token-in-laravel\/","title":{"rendered":"Authentifizierung mobiler Anwendungen mit Token in Laravel"},"content":{"rendered":"<p>Verwenden Sie Laravel f\u00fcr das Backend Ihrer mobilen Anwendung? Wenn ja, dann suchen Sie wahrscheinlich nach einer einfachen L\u00f6sung f\u00fcr die Authentifizierung Ihrer mobilen Anwendung. Viele Benutzer k\u00f6nnen Ihre mobile App verwenden und Sie m\u00f6chten eine Authentifizierung durchf\u00fchren, um Ihren mobilen Benutzern Inhalte bereitzustellen. In diesem Artikel untersuchen wir, wie eine tokenbasierte Authentifizierung in Laravel durchgef\u00fchrt wird. Sie k\u00f6nnen denselben Ansatz auch f\u00fcr die REST-API-Authentifizierung verwenden.<\/p>\n<p>Wir werden <a href=\"https:\/\/laravel.com\/docs\/master\/sanctum\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Sanctum<\/a> integrieren, ein leichtgewichtiges Authentifizierungssystem. Sie k\u00f6nnen es als Ersatz f\u00fcr die OAuth-basierte Authentifizierung betrachten.<\/p>\n<p>W\u00e4hrend der Nutzung von Sanctum werden die API-Token des Benutzers in der Datenbank gespeichert. Dieses Token muss als <code>Bearer<\/code>Token per <code>Authorization<\/code>Header von Ihrer mobilen Anwendung an die Laravel-API-Endpunkte gesendet werden. Diese Token haben normalerweise eine sehr lange Ablaufzeit (Jahre).<\/p>\n<p>Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie Sanctum zur Authentifizierung mobiler Anwendungen verwenden.<\/p>\n<h3>Installieren und konfigurieren Sie Laravel Sanctum<\/h3>\n<p>Um loszulegen, m\u00fcssen Sie zun\u00e4chst ein Sanctum-Paket in Ihrer Laravel-Anwendung installieren. Installieren Sie es mit dem Befehl:<\/p>\n<pre><code>composer require laravel\/sanctum<\/code><\/pre>\n<p>Ver\u00f6ffentlichen Sie danach die Konfigurations- und Migrationsdateien von Sanctum, indem Sie den folgenden Befehl ausf\u00fchren.<\/p>\n<pre><code>php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>F\u00fchren Sie als N\u00e4chstes den Migrationsbefehl aus, der eine <code>personal_access_tokens<\/code>Tabelle in Ihrer Datenbank erstellt. Dies ist die Tabelle, in der alle API-Token gespeichert werden.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Standardm\u00e4\u00dfig erfordert jede Anforderung in Laravel ein csrf-Token. Falls dieses csrf-Token fehlt, wird Laravel Ihre Anfrage nicht bearbeiten. Wenn es darum geht, API-Token mit Sanctum zu generieren, m\u00fcssen wir das Senden des csrf-Tokens \u00fcberspringen. F\u00fcgen Sie dazu <code>sanctum\/token<\/code>route zur <code>$except<\/code>Variablen von hinzu <code>app\/Http\/Middleware\/VerifyCsrfToken.php<\/code>. Diese <code>sanctum\/token<\/code>Route werde ich in den n\u00e4chsten Schritten erstellen .<\/p>\n<pre><code>&lt;?php\n...\nclass VerifyCsrfToken extends Middleware\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The URIs that should be excluded from CSRF verification.\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 $except = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'sanctum\/token'\n\u00a0\u00a0\u00a0\u00a0];\n}<\/code><\/pre>\n<p>Zu Authentifizierungszwecken m\u00fcssen wir den Benutzern ein Token ausstellen. Sie m\u00fcssen also das <code>HasApiTokens<\/code>Merkmal f\u00fcr das Benutzermodell wie folgt verwenden.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppModels;\n...\nuse LaravelSanctumHasApiTokens;\n\u00a0\nclass User extends Authenticatable\n{\n\u00a0\u00a0\u00a0\u00a0use HasApiTokens, HasFactory, Notifiable;\n\u00a0\u00a0\u00a0\u00a0...\n}<\/code><\/pre>\n<h3>Ausgeben von API-Token f\u00fcr die Authentifizierung<\/h3>\n<p>Um in jeder Anfrage ein Bearer-Token mit dem Authorization-Header zu senden, muss zun\u00e4chst ein API-Token ausgestellt werden. Ich werde eine Methode erstellen, die f\u00fcr jeden Benutzer ein API-Token generiert. Um ein Token auszustellen, m\u00fcssen Sie die E-Mail, das Passwort und das Ger\u00e4t eines Benutzers senden.<\/p>\n<p>F\u00fcgen Sie die unten stehende Route in die <code>routes\/web.php<\/code><\/p>\n<pre><code>Route::post('\/sanctum\/token', 'APITokenController@create_token');<\/code><\/pre>\n<p>Erstellen Sie als N\u00e4chstes einen Controller <code>APITokenController<\/code>mit dem Befehl:<\/p>\n<pre><code>php artisan make:controller APITokenController<\/code><\/pre>\n<p>Definieren Sie die <code>create_token()<\/code>Methode im neu erstellten Controller wie folgt.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse AppModelsUser;\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesHash;\nuse IlluminateValidationValidationException;\n\u00a0\nclass APITokenController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function create_token(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;validate([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; 'required|email',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'required',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'device_name' =&gt; 'required',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = User::where('email', $request-&gt;input('email'))-&gt;first();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! $user ||! Hash::check($request-&gt;input('password'), $user-&gt;password)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'error' =&gt; 'The provided credentials are incorrect.'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $user-&gt;createToken($request-&gt;input('device_name'))-&gt;plainTextToken;\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Der obige Code \u00fcberpr\u00fcft zuerst die Anmeldeinformationen des Benutzers. Wenn die Anmeldeinformationen korrekt sind, wird als Antwort ein Token im Nur-Text-Format gesendet. Hier erhalte ich Eingabewerte, da sie in einem JSON-Objekt gesendet werden.<\/p>\n<p>Versuchen Sie, eine POST-Anfrage mit den Anmeldeinformationen des Benutzers zu senden, und Sie sollten das Nur-Text-Token erhalten. Dieses API-Token kann auf dem Mobilger\u00e4t gespeichert und beim Senden von API-Anfragen in einem Header verwendet werden.<\/p>\n<p>In meinem Fall verwende ich die <a href=\"https:\/\/themewp.inform.click\/de\/rest-client-erweiterung-fur-visual-studio-code\/\" title=\"Rest Client-Erweiterung des VS-Codes\">Rest Client-Erweiterung des VS-Codes<\/a> und meine Anfrage an <code>sanctum\/token<\/code>ist wie im Screenshot unten gezeigt.<\/p>\n<p>Gehen Sie zur Datenbank und Sie sollten sehen, dass Ihr Token in der <code>personal_access_tokens<\/code>Tabelle gespeichert ist .<\/p>\n<p>Sanctum erstellt mehrere Token, wenn Sie die <code>sanctum\/token<\/code>Route mit den richtigen Anmeldeinformationen betreten. Wenn Sie das vorherige Token widerrufen m\u00f6chten, f\u00fcgen Sie die folgende Anweisung vor der letzten R\u00fcckgabeanweisung des obigen Codes hinzu.<\/p>\n<pre><code>\/\/ Revoke previous tokens...\n$user-&gt;tokens()-&gt;delete();\n\u00a0\nreturn $user-&gt;createToken($request-&gt;input('device_name'))-&gt;plainTextToken;<\/code><\/pre>\n<p>Sch\u00fctzen Sie schlie\u00dflich die Routen, indem Sie die <code>auth:sanctum<\/code>Middleware wie folgt hinzuf\u00fcgen .<\/p>\n<pre><code>Route::middleware('auth:sanctum')-&gt;get('\/products', function() {\n\u00a0\u00a0\u00a0\u00a0\/\/ write a code\n});<\/code><\/pre>\n<p>Die Middleware \u00fcberpr\u00fcft, ob das Token in einem Authorization-Header empfangen wird. Wenn das API-Token korrekt ist, kann nur die Route fortgesetzt werden.<\/p>\n<p>Als Beispiel k\u00f6nnen Sie im VS-Code das API-Token als Bearer-Token mit dem Authorization-Header senden, wie unten gezeigt.<\/p>\n<p>Ich hoffe, Sie verstehen, wie Sie die Authentifizierung mobiler Anwendungen mithilfe eines Tokens in Laravel integrieren. Ich w\u00fcrde gerne Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-erstellen-sie-einen-blog-mit-laravel\/\" title=\"So erstellen Sie einen Blog mit Laravel\">So erstellen Sie einen Blog mit Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/eine-anleitung-zum-hinzufuegen-von-google-recaptcha-v3-zu-ihrer-laravel-website\/\" title=\"Eine Anleitung zum Hinzuf\u00fcgen von Google reCAPTCHA v3 zu Ihrer Laravel-Website\">Eine Anleitung zum Hinzuf\u00fcgen von Google reCAPTCHA v3 zu Ihrer Laravel-Website<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-laden-sie-videos-auf-youtube-in-der-laravel-anwendung-hoch\/\" title=\"So laden Sie Videos auf YouTube in der Laravel-Anwendung hoch\">So laden Sie Videos auf YouTube in der Laravel-Anwendung hoch<\/a><\/li>\n<\/ul>\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>In diesem Tutorial untersuchen wir, wie die Authentifizierung mobiler Anwendungen mit Laravel als Backend integriert wird. Laravel Sanctum ist ein Paket, das<\/p>\n","protected":false},"author":1,"featured_media":21639,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[496],"tags":[845],"class_list":["post-25467","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\/25467","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=25467"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21639"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}