{"id":29265,"date":"2021-06-08T17:37:00","date_gmt":"2021-06-08T14:37:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29265"},"modified":"2021-10-17T04:22:52","modified_gmt":"2021-10-17T01:22:52","slug":"autentisering-av-mobilapplikation-med-token-i-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/autentisering-av-mobilapplikation-med-token-i-laravel\/","title":{"rendered":"Autentisering av mobilapplikation med Token i Laravel"},"content":{"rendered":"<p>Anv\u00e4nder du Laravel f\u00f6r baksidan av din mobilapp? Om ja, f\u00f6rmodligen letar du efter en enkel l\u00f6sning f\u00f6r din mobilappsverifiering. M\u00e5nga anv\u00e4ndare kan anv\u00e4nda din mobilapp och du vill g\u00f6ra autentisering f\u00f6r att kunna visa inneh\u00e5ll till dina mobilanv\u00e4ndare. I den h\u00e4r artikeln studerar vi hur man g\u00f6r tokenbaserad autentisering i Laravel. Du kan ocks\u00e5 anv\u00e4nda samma metod f\u00f6r REST API-autentisering.<\/p>\n<p>Vi ska integrera <a href=\"https:\/\/laravel.com\/docs\/master\/sanctum\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Sanctum,<\/a> som \u00e4r ett l\u00e4tt autentiseringssystem. Du kan betrakta det som en ers\u00e4ttning f\u00f6r OAuth-baserad autentisering.<\/p>\n<p>N\u00e4r du anv\u00e4nder Sanctum lagras anv\u00e4ndarens API-token i databasen. Den h\u00e4r token m\u00e5ste skickas som <code>Bearer<\/code>token via <code>Authorization<\/code>rubrik fr\u00e5n din mobilapplikation till Laravel API-slutpunkter. Dessa tokens har vanligtvis en mycket l\u00e5ng utg\u00e5ngstid (\u00e5r).<\/p>\n<p>Med det sagt, l\u00e5t oss ta en titt p\u00e5 hur man anv\u00e4nder Sanctum f\u00f6r att autentisera mobilapplikationer.<\/p>\n<h3>Installera och konfigurera Laravel Sanctum<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng m\u00e5ste du f\u00f6rst installera ett Sanctum-paket i din Laravel-applikation. Installera det med kommandot:<\/p>\n<pre><code>composer require laravel\/sanctum<\/code><\/pre>\n<p>Efter detta, publicera konfigurations- och migreringsfilerna f\u00f6r Sanctum genom att k\u00f6ra kommandot nedan.<\/p>\n<pre><code>php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>K\u00f6r sedan migreringskommandot som skapar en <code>personal_access_tokens<\/code>tabell i din databas. Detta \u00e4r tabellen d\u00e4r alla API-tokens kommer att lagras.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Som standard kr\u00e4ver varje beg\u00e4ran i Laravel en csrf-token. Om den h\u00e4r csrf-token saknas forts\u00e4tter Laravel inte med din beg\u00e4ran. N\u00e4r det g\u00e4ller att generera API-tokens med hj\u00e4lp av Sanctum, m\u00e5ste vi hoppa \u00f6ver att skicka csrf-token. F\u00f6r detta, l\u00e4gg till <code>sanctum\/token<\/code>rutt till <code>$except<\/code>variabeln <code>app\/Http\/Middleware\/VerifyCsrfToken.php<\/code>. Jag kommer att skapa den h\u00e4r <code>sanctum\/token<\/code>rutten i n\u00e4sta steg.<\/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>F\u00f6r autentiserings\u00e4ndam\u00e5l m\u00e5ste vi utf\u00e4rda en token till anv\u00e4ndarna. S\u00e5 du m\u00e5ste anv\u00e4nda <code>HasApiTokens<\/code>egenskaper f\u00f6r anv\u00e4ndarmodellen enligt f\u00f6ljande.<\/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>Utf\u00e4rdar API-token f\u00f6r autentisering<\/h3>\n<p>F\u00f6r att skicka en Bearer-token med beh\u00f6righetsrubriken i varje beg\u00e4ran, m\u00e5ste den f\u00f6rst utf\u00e4rda en API-token. Jag ska skapa en metod som genererar en API-token f\u00f6r varje anv\u00e4ndare. F\u00f6r att utf\u00e4rda en token m\u00e5ste du skicka e-postadress, l\u00f6senord och enhet f\u00f6r en anv\u00e4ndare.<\/p>\n<p>L\u00e4gg till rutten nedan i <code>routes\/web.php<\/code><\/p>\n<pre><code>Route::post('\/sanctum\/token', 'APITokenController@create_token');<\/code><\/pre>\n<p>Skapa sedan en styrenhet <code>APITokenController<\/code>med kommandot:<\/p>\n<pre><code>php artisan make:controller APITokenController<\/code><\/pre>\n<p>Definiera <code>create_token()<\/code>metoden i den nyskapade styrenheten enligt f\u00f6ljande.<\/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>Ovanst\u00e5ende kod kontrollerar f\u00f6rst efter anv\u00e4ndarens referenser. Om autentiseringsuppgifterna \u00e4r korrekta skickar den som svar en token i klartextformat. H\u00e4r f\u00e5r jag inmatningsv\u00e4rden med tanke p\u00e5 att de kommer att skickas i ett JSON-objekt.<\/p>\n<p>F\u00f6rs\u00f6k att skicka en POST-beg\u00e4ran med anv\u00e4ndarens autentiseringsuppgifter och du b\u00f6r f\u00e5 token f\u00f6r ren text. Denna API-token kan lagras p\u00e5 den mobila enheten och anv\u00e4ndas i en rubrik n\u00e4r API-f\u00f6rfr\u00e5gningar skickas.<\/p>\n<p>I mitt fall anv\u00e4nder jag <a href=\"https:\/\/themewp.inform.click\/sv\/rest-client-extension-for-visual-studio-kod\/\" title=\"Rest Client-till\u00e4gg av VS-kod\">Rest Client-till\u00e4gg av VS-kod<\/a> och min beg\u00e4ran till <code>sanctum\/token<\/code>\u00e4r som visas i sk\u00e4rmdumpen nedan.<\/p>\n<p>G\u00e5 \u00f6ver till databasen och du b\u00f6r se att din token \u00e4r lagrad i <code>personal_access_tokens<\/code>tabellen.<\/p>\n<p>Sanctum kommer att skapa flera tokens n\u00e4r du n\u00e5r <code>sanctum\/token<\/code>rutten med korrekta referenser. Om du vill \u00e5terkalla den f\u00f6reg\u00e5ende token, l\u00e4gg till nedanst\u00e5ende uttalande f\u00f6re den sista returdeklarationen f\u00f6r ovanst\u00e5ende kod.<\/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>Slutligen, skydda rutterna genom att l\u00e4gga till <code>auth:sanctum<\/code>mellanvaran enligt f\u00f6ljande.<\/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>Mellanvaran validerar om token tas emot i ett beh\u00f6righetshuvud. Om API-token \u00e4r korrekt \u00e4r det bara till\u00e5tet att forts\u00e4tta f\u00f6r rutten.<\/p>\n<p>Som ett exempel kan du i VS-kod skicka API-token som en b\u00e4rartoken med auktoriseringshuvudet som visas nedan.<\/p>\n<p>Jag hoppas att du f\u00f6rst\u00e5r hur du integrerar mobilappsautentisering med hj\u00e4lp av en token i Laravel. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-skapar-en-blogg-med-laravel\/\" title=\"Hur man skapar en blogg med Laravel\">Hur man skapar en blogg med Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/en-guide-om-hur-du-lagger-till-google-recaptcha-v3-till-din-laravel-webbplats\/\" title=\"En guide om hur du l\u00e4gger till Google reCAPTCHA v3 till din Laravel-webbplats\">En guide om hur du l\u00e4gger till Google reCAPTCHA v3 till din Laravel-webbplats<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-laddar-jag-upp-video-pa-youtube-i-laravel-applikationen\/\" title=\"Hur laddar jag upp video p\u00e5 YouTube i Laravel-applikationen\">Hur laddar jag upp video p\u00e5 YouTube i Laravel-applikationen<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I denna handledning studerar vi hur man integrerar mobilappsautentisering med Laravel som backend. Laravel Sanctum \u00e4r ett paket som<\/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":[503],"tags":[850],"class_list":["post-29265","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=29265"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21639"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}