{"id":25482,"date":"2021-06-08T18:18:00","date_gmt":"2021-06-08T15:18:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25482"},"modified":"2021-10-17T20:23:42","modified_gmt":"2021-10-17T17:23:42","slug":"mobiilisovelluksen-todennus-tokenilla-laravelissa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/mobiilisovelluksen-todennus-tokenilla-laravelissa\/","title":{"rendered":"Mobiilisovelluksen todennus Tokenilla Laravelissa"},"content":{"rendered":"<p>K\u00e4yt\u00e4tk\u00f6 Laravelia mobiilisovelluksesi taustana? Jos kyll\u00e4, niin luultavasti etsit helppoa ratkaisua mobiilisovelluksesi todennukseen. Monet k\u00e4ytt\u00e4j\u00e4t voivat k\u00e4ytt\u00e4\u00e4 mobiilisovellustasi ja haluat tehd\u00e4 todentamisen palvelemaan sis\u00e4lt\u00f6\u00e4 mobiilik\u00e4ytt\u00e4jillesi. T\u00e4ss\u00e4 artikkelissa tutkitaan, miten tunnuspohjainen todennus tehd\u00e4\u00e4n Laravelissa. Voit k\u00e4ytt\u00e4\u00e4 samaa l\u00e4hestymistapaa my\u00f6s REST API-todennuksessa.<\/p>\n<p>Aiomme integroida <a href=\"https:\/\/laravel.com\/docs\/master\/sanctum\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Sanctumin,<\/a> joka on kevyt todennusj\u00e4rjestelm\u00e4. Voit pit\u00e4\u00e4 sit\u00e4 OAuth-pohjaisen todennuksen korvaajana.<\/p>\n<p>Sanctumia k\u00e4ytett\u00e4ess\u00e4 k\u00e4ytt\u00e4j\u00e4n API-tunnukset tallennetaan tietokantaan. T\u00e4m\u00e4 tunnus on l\u00e4hetett\u00e4v\u00e4 <code>Bearer<\/code>tunnuksena <code>Authorization<\/code>otsikon kautta mobiilisovelluksestasi Laravel-sovellusliittym\u00e4n p\u00e4\u00e4tepisteisiin. N\u00e4ill\u00e4 rahakkeilla on tyypillisesti hyvin pitk\u00e4 vanhentumisaika (vuotta).<\/p>\n<p>T\u00e4st\u00e4 huolimatta katsotaanpa, miten Sanctumia voidaan k\u00e4ytt\u00e4\u00e4 mobiilisovellusten todentamiseen.<\/p>\n<h3>Asenna ja m\u00e4\u00e4rit\u00e4 Laravel Sanctum<\/h3>\n<p>Aloittamiseksi sinun on ensin asennettava Sanctum-paketti Laravel-sovellukseesi. Asenna se komennolla:<\/p>\n<pre><code>composer require laravel\/sanctum<\/code><\/pre>\n<p>T\u00e4m\u00e4n j\u00e4lkeen julkaise Sanctumin kokoonpano- ja siirtotiedostot suorittamalla alla oleva komento.<\/p>\n<pre><code>php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>Suorita seuraavaksi siirtokomento, joka luo <code>personal_access_tokens<\/code>taulukon tietokantaan. T\u00e4m\u00e4 on taulukko, johon kaikki API-tunnukset tallennetaan.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Oletusarvoisesti kukin Laravelin pyynt\u00f6 vaatii csrf-tunnuksen. Jos t\u00e4m\u00e4 csrf-tunnus puuttuu, Laravel ei jatka pyynt\u00f6\u00e4si. Kun on kyse API-tunnusten luomisesta Sanctumin avulla, meid\u00e4n on ohitettava csrf-tunnuksen l\u00e4hett\u00e4minen. Lis\u00e4\u00e4 t\u00e4t\u00e4 varten <code>sanctum\/token<\/code>reitti <code>$except<\/code>muuttujaan <code>app\/Http\/Middleware\/VerifyCsrfToken.php<\/code>. Luon t\u00e4m\u00e4n <code>sanctum\/token<\/code>reitin seuraavissa vaiheissa.<\/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>Todentamista varten meid\u00e4n on annettava k\u00e4ytt\u00e4jille tunnus. Joten sinun on k\u00e4ytett\u00e4v\u00e4 <code>HasApiTokens<\/code>ominaisuutta k\u00e4ytt\u00e4j\u00e4malliin seuraavasti.<\/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>API-tunnusten my\u00f6nt\u00e4minen todennusta varten<\/h3>\n<p>Bearer-tunnuksen l\u00e4hett\u00e4minen valtuutusotsakkeella jokaisessa pyynn\u00f6ss\u00e4 edellytt\u00e4\u00e4 ensin API-tunnuksen my\u00f6nt\u00e4mist\u00e4. Aion luoda menetelm\u00e4n, joka luo API-tunnuksen jokaiselle k\u00e4ytt\u00e4j\u00e4lle. Tunnuksen antamiseksi sinun on l\u00e4hetett\u00e4v\u00e4 k\u00e4ytt\u00e4j\u00e4n s\u00e4hk\u00f6posti, salasana ja laite.<\/p>\n<p>Lis\u00e4\u00e4 alla oleva reitti <code>routes\/web.php<\/code><\/p>\n<pre><code>Route::post('\/sanctum\/token', 'APITokenController@create_token');<\/code><\/pre>\n<p>Luo seuraavaksi ohjain <code>APITokenController<\/code>komennolla:<\/p>\n<pre><code>php artisan make:controller APITokenController<\/code><\/pre>\n<p>M\u00e4\u00e4rit\u00e4 <code>create_token()<\/code>menetelm\u00e4 uudessa ohjaimessa seuraavasti.<\/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>Yll\u00e4 oleva koodi tarkistaa ensin k\u00e4ytt\u00e4j\u00e4n tunnistetiedot. Jos tunnistetiedot ovat oikein, se l\u00e4hett\u00e4\u00e4 vastauksena pelkk\u00e4n tekstimuodon mukaisen tunnuksen. T\u00e4ss\u00e4 saan tuloarvoja, koska ne l\u00e4hetet\u00e4\u00e4n JSON-objektissa.<\/p>\n<p>Yrit\u00e4 l\u00e4hett\u00e4\u00e4 POST-pyynt\u00f6 k\u00e4ytt\u00e4j\u00e4n kirjautumistiedoilla, ja sinun pit\u00e4isi saada pelkk\u00e4n tekstin tunnus. T\u00e4t\u00e4 API-tunnusta voidaan tallentaa mobiililaitteeseen ja k\u00e4ytt\u00e4\u00e4 otsikossa API-pyynt\u00f6j\u00e4 l\u00e4hetett\u00e4ess\u00e4.<\/p>\n<p>Minun tapauksessani k\u00e4yt\u00e4n <a href=\"https:\/\/themewp.inform.click\/fi\/rest-client-laajennus-visual-studio-koodille\/\" title=\"VS-koodin Rest Client -laajennusta\">VS-koodin Rest Client -laajennusta<\/a> ja pyynt\u00f6ni <code>sanctum\/token<\/code>on alla olevan kuvakaappauksen mukainen.<\/p>\n<p>Siirry tietokantaan ja sinun pit\u00e4isi n\u00e4hd\u00e4, ett\u00e4 tunnuksesi on tallennettu <code>personal_access_tokens<\/code>taulukkoon.<\/p>\n<p>Sanctum luo useita tunnuksia aina, kun ly\u00f6t <code>sanctum\/token<\/code>reitti\u00e4 oikeilla tunnistetiedoilla. Jos haluat kumota edellisen tunnuksen, lis\u00e4\u00e4 seuraava lauseke edellisen koodin viimeisen palautuslausekkeen eteen.<\/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>Suojaa lopuksi reitit lis\u00e4\u00e4m\u00e4ll\u00e4 <code>auth:sanctum<\/code>v\u00e4liohjelmisto seuraavasti.<\/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>V\u00e4liohjelmisto tarkistaa, onko tunniste vastaanotettu Valtuutus-otsikossa. Jos API-tunnus on oikea, vain se sallii reitin etenemisen.<\/p>\n<p>Esimerkiksi VS-koodissa voit l\u00e4hett\u00e4\u00e4 API-tunnuksen Bearer-tunnukseksi Authorization-otsikossa alla olevan kuvan mukaisesti.<\/p>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t, kuinka integroida mobiilisovelluksen todennus tunnuksen avulla Laravelissa. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-luoda-blogi-laravelin-kanssa\/\" title=\"Kuinka luoda blogi Laravelin kanssa\">Kuinka luoda blogi Laravelin kanssa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/opas-google-recaptcha-v3-n-lisaamisesta-laravel-verkkosivustoosi\/\" title=\"Opas Google reCAPTCHA v3: n lis\u00e4\u00e4misest\u00e4 Laravel-verkkosivustoosi\">Opas Google reCAPTCHA v3: n lis\u00e4\u00e4misest\u00e4 Laravel-verkkosivustoosi<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-ladata-video-youtubeen-laravel-sovelluksessa\/\" title=\"Kuinka ladata video YouTubeen Laravel-sovelluksessa\">Kuinka ladata video YouTubeen Laravel-sovelluksessa<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 opetusohjelmassa tutkitaan, miten integroida mobiilisovellusten todennus k\u00e4ytt\u00e4m\u00e4ll\u00e4 Laravelia taustana. Laravel Sanctum on paketti, joka<\/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":[499],"tags":[843],"class_list":["post-25482","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=25482"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25482\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21639"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}