{"id":25874,"date":"2021-06-08T17:48:00","date_gmt":"2021-06-08T14:48:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25874"},"modified":"2021-10-18T03:04:31","modified_gmt":"2021-10-18T00:04:31","slug":"autenticazione-dell-applicazione-mobile-tramite-token-in-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/autenticazione-dell-applicazione-mobile-tramite-token-in-laravel\/","title":{"rendered":"Autenticazione dell&#8217;applicazione mobile tramite token in Laravel"},"content":{"rendered":"<p>Stai usando Laravel per il back-end della tua applicazione mobile? Se s\u00ec, probabilmente stai cercando una soluzione semplice per l&#8217;autenticazione della tua applicazione mobile. Molti utenti possono utilizzare la tua app mobile e tu desideri eseguire l&#8217;autenticazione per offrire contenuti ai tuoi utenti mobili. In questo articolo, studiamo come eseguire l&#8217;autenticazione basata su token in Laravel. Puoi anche usare lo stesso approccio per l&#8217;autenticazione dell&#8217;API REST.<\/p>\n<p>Stiamo andando ad integrare <a href=\"https:\/\/laravel.com\/docs\/master\/sanctum\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">laravel Sanctum<\/a>, che \u00e8 un sistema di autenticazione leggero. Puoi considerarlo come un sostituto dell&#8217;autenticazione basata su OAuth.<\/p>\n<p>Durante l&#8217;utilizzo di Sanctum, i token API dell&#8217;utente vengono archiviati nel database. Questo token deve essere inviato come <code>Bearer<\/code>token tramite <code>Authorization<\/code>intestazione dalla tua applicazione mobile agli endpoint dell&#8217;API Laravel. Questi token hanno in genere una scadenza molto lunga (anni).<\/p>\n<p>Detto questo, diamo un&#8217;occhiata a come utilizzare Sanctum per l&#8217;autenticazione delle applicazioni mobili.<\/p>\n<h3>Installa e configura Laravel Sanctum<\/h3>\n<p>Per iniziare, devi prima installare un pacchetto Sanctum nella tua applicazione Laravel. Installalo usando il comando:<\/p>\n<pre><code>composer require laravel\/sanctum<\/code><\/pre>\n<p>Successivamente, pubblica i file di configurazione e migrazione di Sanctum eseguendo il comando seguente.<\/p>\n<pre><code>php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>Quindi, esegui il comando di migrazione che creer\u00e0 una <code>personal_access_tokens<\/code>tabella nel tuo database. Questa \u00e8 la tabella in cui verranno archiviati tutti i token API.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Per impostazione predefinita, ogni richiesta in Laravel richiede un token csrf. In caso di mancanza di questo token csrf, Laravel non proceder\u00e0 con la tua richiesta. Quando si tratta di generare token API utilizzando Sanctum, dobbiamo saltare l&#8217;invio del token csrf. Per questo, aggiungi <code>sanctum\/token<\/code>route alla <code>$except<\/code>variabile di <code>app\/Http\/Middleware\/VerifyCsrfToken.php<\/code>. Creer\u00f2 questo <code>sanctum\/token<\/code>percorso nei passaggi successivi.<\/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>Ai fini dell&#8217;autenticazione, dobbiamo emettere un token agli utenti. Quindi, devi usare il <code>HasApiTokens<\/code>tratto per il modello Utente come segue.<\/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>Emissione di token API per l&#8217;autenticazione<\/h3>\n<p>Per inviare un token Bearer con l&#8217;intestazione Authorization in ogni richiesta, \u00e8 necessario prima emettere un token API. Creer\u00f2 un metodo che genera un token API per ogni utente. Per emettere un token, ti verr\u00e0 richiesto di inviare l&#8217;e-mail, la password e il dispositivo di un utente.<\/p>\n<p>Aggiungi il percorso sottostante nel <code>routes\/web.php<\/code><\/p>\n<pre><code>Route::post('\/sanctum\/token', 'APITokenController@create_token');<\/code><\/pre>\n<p>Quindi, crea un controller <code>APITokenController<\/code>con il comando:<\/p>\n<pre><code>php artisan make:controller APITokenController<\/code><\/pre>\n<p>Definire il <code>create_token()<\/code>metodo nel controller appena creato come segue.<\/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>Il codice precedente verifica innanzitutto le credenziali dell&#8217;utente. Se le credenziali sono corrette, in risposta invia un token in un formato di testo normale. Qui, sto ricevendo valori di input considerando che verranno inviati in un oggetto JSON.<\/p>\n<p>Prova a inviare una richiesta POST con le credenziali dell&#8217;utente e dovresti ricevere il token di testo normale. Questo token API pu\u00f2 essere archiviato sul dispositivo mobile e utilizzato in un&#8217;intestazione durante l&#8217;invio di richieste API.<\/p>\n<p>Nel mio caso, utilizzo l&#8217; <a href=\"https:\/\/themewp.inform.click\/it\/rest-client-extension-per-visual-studio-code\/\" title=\"estensione Rest Client del codice VS\">estensione Rest Client del codice VS<\/a> e la mia richiesta <code>sanctum\/token<\/code>\u00e8 come mostrato nello screenshot qui sotto.<\/p>\n<p>Vai al database e dovresti vedere che il tuo token \u00e8 memorizzato nella <code>personal_access_tokens<\/code>tabella.<\/p>\n<p>Sanctum creer\u00e0 pi\u00f9 token ogni volta che raggiungi il <code>sanctum\/token<\/code>percorso con le credenziali corrette. Se vuoi revocare il token precedente, aggiungi l&#8217;istruzione seguente prima dell&#8217;ultima istruzione di ritorno del codice precedente.<\/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>Infine, proteggi le route aggiungendo il <code>auth:sanctum<\/code>middleware come segue.<\/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>Il middleware convalida se il token viene ricevuto in un&#8217;intestazione di autorizzazione. Se il token API \u00e8 corretto, solo consente di procedere per il percorso.<\/p>\n<p>Ad esempio, nel codice VS \u00e8 possibile inviare il token API come token Bearer con l&#8217;intestazione di autorizzazione come mostrato di seguito.<\/p>\n<p>Spero che tu capisca come integrare l&#8217;autenticazione dell&#8217;applicazione mobile utilizzando un token in Laravel. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-creare-un-blog-con-laravel\/\" title=\"Come creare un blog con Laravel\">Come creare un blog con Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/una-guida-sull-aggiunta-di-google-recaptcha-v3-al-tuo-sito-web-laravel\/\" title=\"Una guida sull&#039;aggiunta di Google reCAPTCHA v3 al tuo sito web Laravel\">Una guida sull&#8217;aggiunta di Google reCAPTCHA v3 al tuo sito web Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-caricare-video-su-youtube-nell-applicazione-laravel\/\" title=\"Come caricare video su YouTube nell&#039;applicazione Laravel\">Come caricare video su YouTube nell&#8217;applicazione Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <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 questo tutorial, studiamo come integrare l&#8217;autenticazione delle applicazioni mobili utilizzando Laravel come backend. Laravel Sanctum \u00e8 un pacchetto che<\/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":[500],"tags":[846],"class_list":["post-25874","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25874"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25874\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21639"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}