{"id":51761,"date":"2023-03-30T13:43:19","date_gmt":"2023-03-30T13:43:19","guid":{"rendered":"https:\/\/kinqsta.com\/se\/?p=51761&#038;preview=true&#038;preview_id=51761"},"modified":"2025-09-01T15:52:26","modified_gmt":"2025-09-01T15:52:26","slug":"laravel-autentisering","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/","title":{"rendered":"En omfattande guide till Laravel-autentisering"},"content":{"rendered":"<p>Autentisering \u00e4r en av webbapplikationernas mest kritiska och viktiga funktioner. Webbramverk som Laravel erbjuder m\u00e5nga s\u00e4tt f\u00f6r anv\u00e4ndare att autentisera sig.<\/p>\n<p>Du kan dessutom implementera autentiserings-funktioner i Laravel snabbt och s\u00e4kert. Att implementera dessa autentiserings-funktioner p\u00e5 ett d\u00e5ligt s\u00e4tt kan dock vara riskabelt, eftersom skadliga parter kan utnyttja dem.<\/p>\n<p>I den h\u00e4r guiden s\u00e5 f\u00e5r du l\u00e4ra dig allt som du beh\u00f6ver veta f\u00f6r att komma ig\u00e5ng med de autentiserings-metoder som du valt i Laravel.<\/p>\n<p>L\u00e4s vidare!<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Introduktion till Laravel-autentisering<\/h2>\n<p><a href=\"https:\/\/kinqsta.com\/se\/blog\/vad-ar-laravel\/\">Laravel<\/a> introducerar moduler som best\u00e5r av &#8221;guards&#8221; och &#8221;<a href=\"https:\/\/laravel.com\/docs\/9.x\/providers\">providers<\/a>&#8221;. Guards definierar anv\u00e4ndar-autentisering f\u00f6r varje beg\u00e4ran, och providers definierar anv\u00e4ndarh\u00e4mtning fr\u00e5n <a href=\"https:\/\/kinqsta.com\/se\/blog\/bestandig-lagring\/\">best\u00e4ndig lagring<\/a> (exempelvis <a href=\"https:\/\/kinqsta.com\/se\/blog\/vad-ar-mysql\/\">MySQL-databasen<\/a>).<\/p>\n<p>Vi definierar v\u00e5ra autentiserings-parametrar i en fil som heter <code>config\/auth.php<\/code>. Den inkluderar flera alternativ f\u00f6r att justera och \u00e4ndra Laravels autentiserings-beteende.<\/p>\n<p>F\u00f6rst s\u00e5 m\u00e5ste du definiera standardv\u00e4rdena f\u00f6r autentisering. Det h\u00e4r alternativet styr sedan din applikations standardalternativ f\u00f6r autentiseringen &#8221;guards&#8221; och \u00e5terst\u00e4llning av l\u00f6senord. Du kan \u00e4ndra dessa standardv\u00e4rden efter behov, men de \u00e4r en perfekt start f\u00f6r de flesta applikationer.<\/p>\n<p>D\u00e4refter s\u00e5 definierar du autentiserings-vakter f\u00f6r din applikation. H\u00e4r anv\u00e4nder v\u00e5r standard-konfiguration sessionslagring och Elokvent user provider. Alla autentiserings-drivrutiner har en anv\u00e4ndarleverant\u00f6r.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nreturn [\n    \/* \n    Defining Authentication Defaults  \n    *\/\n    \n    'defaults' =&gt; [\n        'guard' =&gt; 'web', \n        'passwords' =&gt; 'users',\n    ],\n    \n    \/*\n    Defining Authentication Guards\n   \n    Supported: \"session\"\n    *\/\n\n    'guards' =&gt; [\n        'web' =&gt; [\n            'driver' =&gt; 'session',\n            'provider' =&gt; 'users',\n        ],\n     ],\n    \n    \/*\n    Defining User Providers\n\n    Supported: \"database\", \"eloquent\"\n    *\/\n\n    'providers' =&gt; [\n        'users' =&gt; [\n             'driver' =&gt; 'eloquent',\n             'model' =&gt; App\\Models\\User::class,\n        ], \n\n        \/\/ 'users' =&gt; [\n        \/\/     'driver' =&gt; 'database',\n        \/\/     'table' =&gt; 'users',\n        \/\/ ],\n    ],\n\n    \/*\n    Defining Password Resetting\n    *\/\n\n    'passwords' =&gt; [\n        'users' =&gt; [\n            'provider' =&gt; 'users',\n            'table' =&gt; 'password_resets',\n            'expire' =&gt; 60,\n            'throttle' =&gt; 60,\n         ],\n     ],\n\n     \/*\n     Defining Password Confirmation Timeout\n     *\/\n\n    'password_timeout' =&gt; 10800,\n];<\/code><\/pre>\n<h3>Se till att alla autentiserings-drivrutiner har en anv\u00e4ndarleverant\u00f6r<\/h3>\n<p>Senare s\u00e5 ser vi till att alla autentiserings-drivrutiner har en anv\u00e4ndarleverant\u00f6r. Denna definierar hur anv\u00e4ndarna h\u00e4mtas fr\u00e5n din databas eller andra lagrings-mekanismer f\u00f6r att bevara anv\u00e4ndardata. Du kan dessutom konfigurera flera k\u00e4llor som representerar varje modell eller tabell om du har flera anv\u00e4ndartabeller eller modeller. Dessa k\u00e4llor kan sedan tilldelas alla extra autentiserings-vakter som du har definierat.<\/p>\n<p>Anv\u00e4ndare kan \u00e4ven vilja \u00e5terst\u00e4lla sina l\u00f6senord. F\u00f6r detta \u00e4ndam\u00e5l s\u00e5 kan du ange flera konfigurationer f\u00f6r \u00e5terst\u00e4llning av l\u00f6senord. Detta g\u00e4ller om du har mer \u00e4n en anv\u00e4ndartabell eller modell i applikationen och vill ha separata inst\u00e4llningar som \u00e4r baserade p\u00e5 de specifika anv\u00e4ndartyperna. Utg\u00e5ngstiden \u00e4r det antal minuter som varje \u00e5terst\u00e4llnings-token kommer att vara giltig. Med den h\u00e4r s\u00e4kerhetsfunktionen s\u00e5 h\u00e5lls dina tokens kortvariga, s\u00e5 att de har mindre tid att gissa sig till. Du kan \u00e4ndra detta vid behov.<\/p>\n<p>I slut\u00e4ndan s\u00e5 m\u00e5ste du dessutom definiera den tid som ska g\u00e5 innan en bekr\u00e4ftelse av l\u00f6senordet tar slut. D\u00e5 kommer anv\u00e4ndaren uppmanas att ange sitt l\u00f6senord p\u00e5 nytt via bekr\u00e4ftelse-sk\u00e4rmen. Som standard s\u00e5 varar timeout-tiden i tre timmar.<\/p>\n<h2>Typer av Laravel-autentiseringsmetoder<\/h2>\n<p>Det finns inget perfekt s\u00e4tt att autentisera varje scenario. Om du k\u00e4nner till dem s\u00e5 kan du dock fatta b\u00e4ttre beslut. Du kommer \u00e4ven att f\u00e5 l\u00e4ra dig hur Laravel utvecklas med de nya funktionerna i <a href=\"https:\/\/kinqsta.com\/se\/blog\/laravel-9\/\">Laravel 9<\/a>. Detta g\u00f6r v\u00e5rt jobb som utvecklare mycket enklare n\u00e4r vi byter autentiserings-metoder.<\/p>\n<h3>L\u00f6senordsbaserad autentisering<\/h3>\n<p>Det \u00e4r ett rudiment\u00e4rt s\u00e4tt att autentisera en anv\u00e4ndare och anv\u00e4nds fortfarande av tusentals organisationer. Med tanke p\u00e5 den nuvarande utvecklingen s\u00e5 b\u00f6rjar det dock helt klart bli f\u00f6r\u00e5ldrat.<\/p>\n<p>Leverant\u00f6rerna m\u00e5ste tvinga fram komplexa implementeringar av l\u00f6senord samtidigt som de s\u00e4kerst\u00e4ller minimal friktion f\u00f6r slutanv\u00e4ndaren.<\/p>\n<p>Det fungerar ganska enkelt, anv\u00e4ndaren anger namn och l\u00f6senord. Om det finns en matchning mellan dessa tv\u00e5 i databasen s\u00e5 best\u00e4mmer sig servern f\u00f6r att autentisera beg\u00e4randet och l\u00e5ta anv\u00e4ndaren f\u00e5 tillg\u00e5ng till resurserna under en f\u00f6rdefinierad tid.<\/p>\n<h3>Tokenbaserad autentisering<\/h3>\n<p>Denna metod anv\u00e4nds n\u00e4r anv\u00e4ndaren f\u00e5r en unik token efter verifiering.<\/p>\n<p>Med denna token s\u00e5 kan anv\u00e4ndaren nu f\u00e5 tillg\u00e5ng till relevanta resurser. Privilegiet \u00e4r aktivt tills denna token l\u00f6per ut.<\/p>\n<p>Under tiden som denna token \u00e4r aktiv s\u00e5 beh\u00f6ver anv\u00e4ndaren inte anv\u00e4nda n\u00e5got anv\u00e4ndarnamn eller l\u00f6senord. N\u00e4r han\/hon h\u00e4mtar en ny token s\u00e5 kr\u00e4vs dock dessa tv\u00e5.<\/p>\n<p>Tokens anv\u00e4nds i stor utstr\u00e4ckning i flera scenarier i dag eftersom de \u00e4r tillst\u00e5ndsl\u00f6sa enheter som inneh\u00e5ller alla autentiserings-uppgifter.<\/p>\n<p>Att tillhandah\u00e5lla ett s\u00e4tt att separera token-generering fr\u00e5n token-verifiering ger leverant\u00f6rerna en stor flexibilitet.<\/p>\n<h3>Autentisering med flera faktorer<\/h3>\n<p>Som namnet antyder s\u00e5 inneb\u00e4r detta att man anv\u00e4nder minst tv\u00e5 autentiserings-faktorer. Som ett resultat s\u00e5 \u00f6kar s\u00e4kerheten.<\/p>\n<p>Till skillnad fr\u00e5n <a href=\"https:\/\/kinqsta.com\/se\/blog\/wordpress-tvafaktorsautentisering\/\">tv\u00e5faktorsautentisering<\/a> som endast innefattar tv\u00e5 faktorer s\u00e5 kan denna metod innefatta tv\u00e5, tre, fyra eller fler&#8230;<\/p>\n<p>Den h\u00e4r metodens typiska genomf\u00f6rande inneb\u00e4r att man anv\u00e4nder ett l\u00f6senord, varefter anv\u00e4ndaren f\u00e5r en verifieringskod p\u00e5 sin smartphone. Leverant\u00f6rer som implementerar den h\u00e4r metoden b\u00f6r h\u00e5lla utkik efter falska positiva resultat och n\u00e4tverksavbrott, vilket kan bli stora problem n\u00e4r man skalar upp snabbt.<\/p>\n<h2>Hur man implementerar Laravel-autentisering<\/h2>\n<p>I det h\u00e4r avsnittet s\u00e5 l\u00e4r du dig flera olika s\u00e4tt att autentisera anv\u00e4ndarna i din applikation. Vissa bibliotek som Jetstream, Breeze och Socialite har <a href=\"https:\/\/kinqsta.com\/se\/blog\/laravel-tutorial\/\">kostnadsfria handledningar<\/a> om hur man anv\u00e4nder dem.<\/p>\n<h3>Manuell autentisering<\/h3>\n<p>B\u00f6rja med att registrera anv\u00e4ndare och skapa de n\u00f6dv\u00e4ndiga routerna i <code>routes\/web.php<\/code><strong>.<\/strong><\/p>\n<p>Vi kommer att skapa tv\u00e5 router, en f\u00f6r att visa formul\u00e4ret och en f\u00f6r att registrera:<\/p>\n<pre><code class=\"language-php\">use App\\Http\\Controllers\\Auth\\RegisterController;\nuse Illuminate\\Support\\Facades\\Route;\n\n\/*\nWeb Routes \n\nRegister web routes for your app's RouteServiceProvider \nin a group containing the \"web\" middleware\n*\/\n\nRoute::get('\/register', [RegisterController::class, 'create']);\nRoute::post('\/register', [RegisterController::class, 'store']);<\/code><\/pre>\n<p>Och skapa den kontrollant som beh\u00f6vs f\u00f6r dessa:<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller Auth\/RegisterController -r<\/code><\/pre>\n<p>Uppdatera nu koden p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse illuminate\\Htpp\\Request;\n\nclass RegisterController extends Controller\n{\n    public function create()\n    {\n        return view('auth.register');\n    }\n\n    public function store(Request $request)\n    {\n    }\n}<\/code><\/pre>\n<p>Kontrollanten \u00e4r tom nu och returnerar en vy som ska registreras. Vi skapar den vyn i <code>resources\/views\/auth<\/code> och kallar den <code>register.blade.php<\/code>.<\/p>\n<figure style=\"width: 1968px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Register-User.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Register-User.png\" alt=\"Laravel blade-vy f\u00f6r registrering av anv\u00e4ndare.\" width=\"1968\" height=\"1862\"><\/a><figcaption class=\"wp-caption-text\">Laravel blade-vy f\u00f6r registrering av anv\u00e4ndare.<\/figcaption><\/figure>\n<h3>Bes\u00f6k \/register-route<\/h3>\n<p>Nu n\u00e4r allt \u00e4r p\u00e5 plats s\u00e5 b\u00f6r vi bes\u00f6ka v\u00e5r <code>\/register<\/code>-route och se f\u00f6ljande formul\u00e4r:<\/p>\n<figure id=\"attachment_162747\" aria-describedby=\"caption-attachment-162747\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-162747 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/laravel-authentication-user-login-form.png\" alt=\"Registreringsformul\u00e4r f\u00f6r manuell autentisering.\" width=\"960\" height=\"264\"><figcaption id=\"caption-attachment-162747\" class=\"wp-caption-text\">Registreringsformul\u00e4r f\u00f6r manuell autentisering.<\/figcaption><\/figure>\n<p>Nu n\u00e4r vi kan visa ett formul\u00e4r som en anv\u00e4ndare kan fylla i och f\u00e5 data f\u00f6r det, b\u00f6r vi h\u00e4mta anv\u00e4ndarnas data. Vi b\u00f6r sedan validera dem och d\u00e4refter lagra dem i databasen om allt \u00e4r bra. H\u00e4r b\u00f6r du anv\u00e4nda en databas-transaktion f\u00f6r att se till att de data som du l\u00e4gger in \u00e4r fullst\u00e4ndiga.<\/p>\n<p>Vi kommer att anv\u00e4nda Laravel&#8217;s funktion f\u00f6r validering av beg\u00e4randen f\u00f6r att se till att alla tre autentiserings-uppgifter kr\u00e4vs. Vi m\u00e5ste dessutom se till att e-postmeddelandet har ett e-postformat och \u00e4r unikt i tabellen <code>users<\/code> och att l\u00f6senordet \u00e4r bekr\u00e4ftat och har minst 8 tecken:<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass RegisterController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/* \n        Validation\n        *\/\n        $request-&gt;validate([\n            'name' =&gt; 'required',\n            'email' =&gt; 'required|email|unique:users',\n            'password' =&gt; 'required|confirmed|min:8',\n        ]);\n\n        \/*\n        Database Insert\n        *\/\n        $user = User::create([\n            'name' =&gt; $request-&gt;name,\n            'email' =&gt; $request-&gt;email,\n            'password' =&gt; Hash::make($request-&gt;password),\n        ]);\n\n        return back();\n    }\n\n    public function create()\n    {\n        return view('auth.register');\n    }\n}<\/code><\/pre>\n<h3>Allt som strider mot valideringen ger upphov till fel<\/h3>\n<p>Nu n\u00e4r v\u00e5r inmatning \u00e4r validerad s\u00e5 kommer allt som strider mot valideringen att ge upphov till ett fel som visas i formul\u00e4ret:<\/p>\n<figure id=\"attachment_162751\" aria-describedby=\"caption-attachment-162751\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-162751 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/laravel-authentication-invalid-register-input.png\" alt=\"Exempel p\u00e5 en ogiltig inmatning f\u00f6r registrering\" width=\"960\" height=\"168\"><figcaption id=\"caption-attachment-162751\" class=\"wp-caption-text\">Exempel p\u00e5 en ogiltig inmatning f\u00f6r registrering<\/figcaption><\/figure>\n<p>Om vi antar att vi har skapat ett anv\u00e4ndarkonto i metoden <code>store<\/code> s\u00e5 b\u00f6r vi \u00e4ven logga in anv\u00e4ndaren. Det finns tv\u00e5 s\u00e4tt att g\u00f6ra detta p\u00e5. Vi kan g\u00f6ra det manuellt eller anv\u00e4nda <strong>Auth-fasaden<\/strong>.<\/p>\n<p>N\u00e4r anv\u00e4ndaren har loggat in s\u00e5 ska vi inte skicka tillbaka honom eller henne till sk\u00e4rmen Registrering. Anv\u00e4ndaren ska ist\u00e4llet skickas till en ny sida, exempelvis en instrumentpanel eller en hemsida. Detta g\u00f6rs med denna kod:<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Providers\\RouteServiceProvider;\nuse Illuminate\\Foundation\\Auth\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass RegisterController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/* \n        Validation\n        *\/\n        $request-&gt;validate([\n            'name' =&gt; 'required',\n            'email' =&gt; 'required|email|unique:users',\n            'password' =&gt; 'required|confirmed|min:8',\n        ]);\n\n        \/*\n        Database Insert\n        *\/\n        $user = User::create([\n            'name' =&gt; $request-&gt;name,\n            'email' =&gt; $request-&gt;email,\n            'password' =&gt; Hash::make($request-&gt;password),\n        ]);\n\n        Auth::login($user);\n\n        return redirect(RouteServiceProvider::HOME);\n    }\n\n    public function create()\n    {\n        return view('auth.register');\n    }\n}<\/code><\/pre>\n<p>Nu n\u00e4r vi har registrerat en anv\u00e4ndare och loggat in p\u00e5 <code>-n<\/code> s\u00e5 ska vi se till att han kan logga ut p\u00e5 ett s\u00e4kert s\u00e4tt.<\/p>\n<h3>Ogiltigf\u00f6rklara sessionen<\/h3>\n<p>Laravel f\u00f6resl\u00e5r att vi ogiltigf\u00f6rklarar sessionen och \u00e5terskapar en token f\u00f6r s\u00e4kerheten efter en utloggning. Och det \u00e4r precis vad vi ska g\u00f6ra. Vi b\u00f6rjar med att skapa en ny <code>\/logout<\/code>-route med hj\u00e4lp av <strong>LogoutControllers <\/strong><code>destroy<\/code>-metoden:<\/p>\n<pre><code class=\"language-php\">use App\\Http\\Controllers\\Auth\\RegisterController;\nuse App\\Http\\Controllers\\Auth\\LogoutController;\nuse Illuminate\\Support\\Facades\\Route;\n\n\/*\nWeb Routes\n\nHere is where you can register web routes for your application. These\nroutes are loaded by the RrouteServiceProvider with a group which\ncontains the \"web\" middleware group. Now create something great!\n*\/\n\nRoute::get('\/register', [RegisterController::class, 'create']);\nRoute::post('\/register', [RegisterController::class, 'store']);\nRoute::post('\/logout', [Logoutcontroller::class, 'destroy'])\n    -&gt;middleware('auth');<\/code><\/pre>\n<p>Att skicka utloggningen genom <code>auth<\/code>-middleware \u00e4r mycket viktigt. Anv\u00e4ndarna ska inte kunna komma \u00e5t routen om de inte \u00e4r inloggade.<\/p>\n<p>Skapa nu en kontrollant som vi gjorde tidigare:<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller Auth\/LogoutController -r<\/code><\/pre>\n<h3>Logga ut anv\u00e4ndaren<\/h3>\n<p>Vi kan se till att vi f\u00e5r beg\u00e4ran som en parameter i <code>destroy<\/code>-metoden. Vi loggar ut anv\u00e4ndaren via Auth-fasaden, ogiltigf\u00f6rklarar sessionen och \u00e5terskapar v\u00e5r token och omdirigerar sedan anv\u00e4ndaren till hemsidan:<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass LogoutController extends Controller\n{\n    public function destroy(Request $request)\n    { \n        Auth::logout();\n\n        $request-&gt;session()-&gt;invalidate();\n        $request-&gt;session()-&gt;regenerateToken();\n \n        return redirect('\/');\n     }\n}<\/code><\/pre>\n<h3>Att komma ih\u00e5g anv\u00e4ndare<\/h3>\n<p>De flesta, om inte alla, moderna webbapplikationer har en kryssruta f\u00f6r &#8221;kom ih\u00e5g mig&#8221; i inloggningsformul\u00e4ret.<\/p>\n<p>Om vi vill tillhandah\u00e5lla en funktion f\u00f6r att komma ih\u00e5g en anv\u00e4ndare s\u00e5 kan vi skicka ett boolsk v\u00e4rde som andra argument till metoden attempt.<\/p>\n<p>N\u00e4r det \u00e4r giltigt s\u00e5 kommer Laravel att h\u00e5lla anv\u00e4ndaren autentiserad p\u00e5 en obest\u00e4md tid eller tills de loggas ut manuellt. Anv\u00e4ndartabellen m\u00e5ste inkludera kolumnen string <code>remember_token<\/code> (det \u00e4r d\u00e4rf\u00f6r som vi f\u00f6rnyar v\u00e5ra tokens), d\u00e4r vi kommer att lagra v\u00e5r &#8221;kom ih\u00e5g mig&#8221;-token.<\/p>\n<p>Standard-migreringen f\u00f6r anv\u00e4ndare inkluderar redan denna.<\/p>\n<p>F\u00f6rst och fr\u00e4mst s\u00e5 m\u00e5ste du l\u00e4gga till f\u00e4ltet <strong>Remember Me<\/strong>\u00a0i ditt formul\u00e4r:<\/p>\n<figure style=\"width: 1396px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/RememberMe.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/RememberMe.png\" alt=\"L\u00e4gg till mig-f\u00e4ltet.\" width=\"1396\" height=\"596\"><\/a><figcaption class=\"wp-caption-text\">L\u00e4gg till mig-f\u00e4ltet.<\/figcaption><\/figure>\n<p>Du h\u00e4mtar sedan autentiserings-uppgifterna fr\u00e5n beg\u00e4randet och anv\u00e4nder dem i f\u00f6rs\u00f6ks-metoden p\u00e5 Auth-fasaden.<\/p>\n<p>Om anv\u00e4ndaren blir ih\u00e5gkommen s\u00e5 kommer vi att logga in honom och omdirigera honom till v\u00e5r hemsida. I annat fall s\u00e5 kommer vi att visa ett felmeddelande:<\/p>\n<pre><code class=\"language-php\">public function store(Request $request)\n{\n    $credentials = $request-&gt;only('email', 'password');\n\n    if (Auth::attempt($credentials, $request-&gt;filled('remember'))) {\n        $request-&gt;session()-&gt;regenerate();\n\n        return redirect()-&gt;intended('\/');\n    }\n\n    return back()-&gt;withErrors([\n        'email' =&gt; 'The provided credentials do not match our records.',\n    ]);\n}<\/code><\/pre>\n<h3>\u00c5terst\u00e4llning av l\u00f6senord<\/h3>\n<p>De flesta webbapplikationer erbjuder idag s\u00e4tt f\u00f6r anv\u00e4ndarna att \u00e5terst\u00e4lla sina l\u00f6senord.<\/p>\n<p>Vi kommer att skapa en annan route f\u00f6r det gl\u00f6mda l\u00f6senordet och skapa kontrollanten p\u00e5 samma s\u00e4tt som tidigare. Dessutom s\u00e5 l\u00e4gger vi till en route f\u00f6r l\u00e4nken f\u00f6r \u00e5terst\u00e4llning av l\u00f6senordet som inkluderar en token f\u00f6r hela processen:<\/p>\n<pre><code class=\"language-php\">Route::post('\/forgot-password', [ForgotPasswordLinkController::class, 'store']);\nRoute::post('\/forgot-password\/{token}', [ForgotPasswordController::class, 'reset']);<\/code><\/pre>\n<p>I butiksmetoden s\u00e5 tar vi e-postmeddelandet fr\u00e5n beg\u00e4randet och validerar det som vi gjorde.<\/p>\n<p>D\u00e4refter s\u00e5 kan vi anv\u00e4nda <code>sendResetLink<\/code>-metoden fr\u00e5n l\u00f6senords-fasaden.<\/p>\n<p>Som svar s\u00e5 b\u00f6r vi sedan returnera statusen om vi lyckades skicka l\u00e4nken, annars ett felmeddelande:<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Password;\n\nclass ForgotPasswordLinkController extends Controller\n{\n    public function store(Request $request)\n    {\n        $request-&gt;validate([\n             'email' =&gt; 'required|email',\n        ]);\n\n        $status = Password::sendResetLink(\n            $request-&gt;only('email');\n        );\n\n        return $status === Password::RESET_LINK_SENT\n            ? back()-&gt;with('status', __($status))\n            : back()-&gt;withInput($request-&gt;only('email'))-&gt;withErrors(['email' =&gt; __($status)]);\n     }\n}<\/code><\/pre>\n<p>Nu n\u00e4r \u00e5terst\u00e4llningsl\u00e4nken har skickats till anv\u00e4ndarens e-post s\u00e5 b\u00f6r vi ta hand om logiken f\u00f6r vad som h\u00e4nder d\u00e4refter.<\/p>\n<p>Vi h\u00e4mtar token, e-post och nytt l\u00f6senord i beg\u00e4randet och validerar dem.<\/p>\n<h3>Nyttja \u00e5terst\u00e4ll-metoden<\/h3>\n<p>D\u00e4refter s\u00e5 kan vi anv\u00e4nda \u00e5terst\u00e4ll-metoden fr\u00e5n password-fassaden f\u00f6r att l\u00e5ta Laravel ta hand om allt annat bakom kulisserna.<\/p>\n<p>Vi kommer alltid att hash-behandla l\u00f6senordet f\u00f6r att h\u00e5lla det s\u00e4kert.<\/p>\n<p>I slutet s\u00e5 kommer vi att kontrollera om l\u00f6senordet har \u00e5terst\u00e4llts. Om s\u00e5 \u00e4r fallet s\u00e5 kommer vi att omdirigera anv\u00e4ndaren till inloggningssk\u00e4rmen med ett meddelande om framg\u00e5ng. I annat fall s\u00e5 visar vi ett felmeddelande om att det inte kunde \u00e5terst\u00e4llas:<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Support\\Facades\\Password;\nuse Illuminate\\Support\\Str;\n\nclass ForgotPasswordController extends Controller\n{\n    public function reset(Request $request)\n    {\n        $request-&gt;validate([\n            'token' =&gt; 'required',\n            'email' =&gt; 'required|email',\n            'password' =&gt; 'required|string|confirmed|min:8',\n        ]);\n\n        $status = Password::reset(\n            $request-&gt;only('email', 'password', 'password_confirmation', 'token'),\n            function ($user) use ($request) {\n                $user-&gt;forceFill(\n                    'password' =&gt; Hash::make($request-&gt;password),\n                    'remember_token' =&gt; Str::random(60)\n                ])-&gt;save();\n            }\n        );\n\n        return $status == Password::PASSWORD_RESET\n            ? redirect()-&gt;route('login')-&gt;with('status', __($status))\n            : back()-&gt;withInput($request-&gt;only('email'))-&gt;withErrors(['email' =&gt; __($status)]);\n    }\n}<\/code><\/pre>\n<h2>Laravel Breeze<\/h2>\n<p><a href=\"https:\/\/kinqsta.com\/blog\/laravel-breeze\/\">Laravel Breeze<\/a> \u00e4r en enkel implementering av Laravel&#8217;s autentiserings-funktioner: inloggning, registrering, \u00e5terst\u00e4llning av l\u00f6senord, e-postverifiering och bekr\u00e4ftelse av l\u00f6senord. Du kan anv\u00e4nda den f\u00f6r att implementera autentisering i din nya Laravel-applikation.<\/p>\n<h3>Installation och inst\u00e4llning<\/h3>\n<p>N\u00e4r du har skapat din Laravel-applikation s\u00e5 beh\u00f6ver du bara konfigurera din databas, k\u00f6ra dina migreringar och installera paketet laravel\/breeze via composer:<\/p>\n<pre><code class=\"language-php\">composer require laravel\/breeze --dev<\/code><\/pre>\n<p>Efter detta s\u00e5 k\u00f6r du f\u00f6ljande:<\/p>\n<pre><code class=\"language-bash\">php artisan breeze:install<\/code><\/pre>\n<p>Detta kommer sedan att publicera dina autentiserings-vyer, router, styrenheter och andra resurser som anv\u00e4nds. Efter detta steg s\u00e5 har du fullst\u00e4ndig kontroll \u00f6ver allt som Breeze tillhandah\u00e5ller.<\/p>\n<p>Nu m\u00e5ste vi \u00e5terge v\u00e5r applikation till frontend, s\u00e5 vi kommer att installera v\u00e5ra JS-beroenden (som kommer att anv\u00e4nda @vite):<\/p>\n<pre><code class=\"language-php\">npm install<\/code><\/pre>\n<p>:<\/p>\n<pre><code class=\"language-php\">npm run dev<\/code><\/pre>\n<p>D\u00e4refter s\u00e5 b\u00f6r l\u00e4nkarna f\u00f6r inloggning och registrering finnas p\u00e5 din hemsida och allt b\u00f6r fungera smidigt.<\/p>\n<h2>Laravel Jetstream<\/h2>\n<p>Laravel Jetstream ut\u00f6kar Laravel Breeze med anv\u00e4ndbara funktioner och andra frontend-stackar.<\/p>\n<p>Den tillhandah\u00e5ller inloggning, registrering, e-postverifiering, <a href=\"https:\/\/www.google.com\/url?q=https:\/\/kinqsta.com\/blog\/wordpress-two-factor-authentication\/&#038;sa=D&#038;source=editors&#038;ust=1665232246657389&#038;usg=AOvVaw0_jXtwBiKx5qxPlTHGGCXc\">tv\u00e5faktorsautentisering<\/a>, sessionshantering, API-st\u00f6d via Sanctum och valfri team-hantering.<\/p>\n<p>Du m\u00e5ste v\u00e4lja mellan Livewire och <a href=\"https:\/\/kinqsta.com\/se\/blog\/laravel-inertia\/\">Inertia<\/a> p\u00e5 frontend n\u00e4r du installerar Jetstream. P\u00e5 backend s\u00e5 anv\u00e4nds Laravel Fortify, som \u00e4r en frontend agnostisk, &#8221;huvudl\u00f6s&#8221; autentiserings-backend f\u00f6r Laravel.<\/p>\n<h3>Installation och inst\u00e4llning<\/h3>\n<p>Vi kommer att installera den genom composer i v\u00e5rt Laravel-projekt:<\/p>\n<pre><code class=\"language-php\">composer require laravel\/jetstream<\/code><\/pre>\n<p>D\u00e4refter s\u00e5 k\u00f6r vi kommandot <code>php artisan jetstream:install [stack]<\/code>, som accepterar <code>[stack]<\/code> -argumenten <code>Livewire<\/code> eller <code>Inertia<\/code>. Du kan skicka alternativet <code>\u2013-teams<\/code> f\u00f6r att aktivera teamfunktionen.<\/p>\n<p>Detta kommer \u00e4ven att installera Pest <a href=\"https:\/\/www.google.com\/url?q=https:\/\/kinqsta.com\/blog\/scripting-languages\/&#038;sa=D&#038;source=editors&#038;ust=1665232246659068&#038;usg=AOvVaw0OuP24kCNOrcZIHp8-2y_A\">PHP<\/a> f\u00f6r testning.<\/p>\n<p>Och slutligen s\u00e5 m\u00e5ste vi rendera frontend av v\u00e5r applikation med hj\u00e4lp av f\u00f6ljande:<\/p>\n<pre><code class=\"language-php\">npm install\nnpm run dev<\/code><\/pre>\n<h2>Laravel Fortify<\/h2>\n<p>Laravel Fortify \u00e4r en autentiserings-implementering f\u00f6r backend som \u00e4r oberoende av frontend. Du beh\u00f6ver inte anv\u00e4nda Laravel Fortify f\u00f6r att implementera Laravels autentiserings-funktioner.<\/p>\n<p>Den anv\u00e4nds \u00e4ven i startpaket som Breeze och Jetstream. Du kan dessutom anv\u00e4nda Fortify standalone, som endast \u00e4r en backend-implementering. Om du anv\u00e4nder den frist\u00e5ende s\u00e5 m\u00e5ste din frontend anropa Fortify-v\u00e4garna.<\/p>\n<h3>Installation och inst\u00e4llning<\/h3>\n<p>Vi kan installera Fortify genom composer:<\/p>\n<pre><code class=\"language-php\">composer require laravel\/fortify<\/code><\/pre>\n<p>Nu m\u00e5ste vi publicera Fortifys resurser:<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"Laravel\\Fortify\\FortifyServiceProvider\"<\/code><\/pre>\n<p>D\u00e4refter s\u00e5 kommer vi att skapa en ny <strong>app\/Actions-katalog<\/strong> ut\u00f6ver den nya <strong>FortifyServiceProvider<\/strong>, konfigurationsfilen och databas-migreringen.<\/p>\n<p>Slutligen s\u00e5 ska du k\u00f6ra:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<p>Eller:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate:fresh<\/code><\/pre>\n<p>Sen \u00e4r Fortify \u00e4r redo att anv\u00e4ndas.<\/p>\n<h2>Laravel Socialite<\/h2>\n<p>Laravel inkluderar dessutom en enkel OAuth-baserad funktion f\u00f6r anv\u00e4ndar-autentisering. Den st\u00f6der exempelvis sociala inloggningar via Facebook, <a href=\"https:\/\/kinqsta.com\/se\/blog\/twitter-statistik\/\">Twitter<\/a>, <a href=\"https:\/\/kinqsta.com\/blog\/linkedin-statistics\/\">LinkedIn<\/a>, Google, <a href=\"https:\/\/kinqsta.com\/blog\/git-for-web-development\/\">Bitbucket, GitHub och GitLab<\/a>.<\/p>\n<h3>Installation<\/h3>\n<p>Vi kan installera den via composer:<\/p>\n<pre><code class=\"language-php\">composer require laravel\/socialite<\/code><\/pre>\n<h3>Installation och anv\u00e4ndning<\/h3>\n<p>N\u00e4r vi har installerat den s\u00e5 m\u00e5ste vi sedan l\u00e4gga till autentiserings-uppgifter f\u00f6r den OAuth-provider som v\u00e5r applikation anv\u00e4nder. Vi l\u00e4gger till dem i <strong>config\/services.php<\/strong> f\u00f6r varje tj\u00e4nst.<\/p>\n<p>I konfigurationen s\u00e5 ska vi matcha nyckeln med de tidigare tj\u00e4nsterna. N\u00e5gra av dessa nycklar \u00e4r exempelvis:<\/p>\n<ul>\n<li>facebook<\/li>\n<li>twitter (f\u00f6r OAuth 1.0)<\/li>\n<li>twitter-oauth-2 (F\u00f6r OAuth 2.0)<\/li>\n<li>linkedin<\/li>\n<li>google<\/li>\n<li>github<\/li>\n<li>gitlab<\/li>\n<li>bitbucket<\/li>\n<\/ul>\n<p>En tj\u00e4nstekonfiguration kan se ut s\u00e5 h\u00e4r:<\/p>\n<pre><code class=\"language-php\">'google' =&gt; [\n    'client_id' =&gt; env(\"GOOGLE_CLIENT_ID\"),\n    'client_secret' =&gt; env(\"GOOGLE_CLIENT_SECRET\"),\n    'redirect' =&gt; \"http:\/\/example.com\/callback-url\",\n],<\/code><\/pre>\n<h3>Autentisering av anv\u00e4ndare<\/h3>\n<p>F\u00f6r den h\u00e4r \u00e5tg\u00e4rden s\u00e5 beh\u00f6ver vi tv\u00e5 router, en f\u00f6r att omdirigera anv\u00e4ndaren till OAuth-leverant\u00f6ren:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Sociliate;\n\nRoute::get('\/auth\/redirect', function () {\n    return Socialite::driver('google')-&gt;redirect();\n});<\/code><\/pre>\n<p>och en f\u00f6r callback fr\u00e5n leverant\u00f6ren efter autentisering:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Socialite;\n\nRoute:;get('\/auht\/callback', function () {\n    $user = Socialite::driver('google')-&gt;user();\n\n    \/\/ Getting the user data\n    $user-&gt;token;\n});<\/code><\/pre>\n<p>Socialite tillhandah\u00e5ller omdirigeringsmetoden, och fasaden omdirigerar anv\u00e4ndaren till OAuth-leverant\u00f6ren. Anv\u00e4ndarmetoden unders\u00f6ker sedan det inkommande beg\u00e4randet och h\u00e4mtar anv\u00e4ndarinformationen.<\/p>\n<h3>Kontrollera om anv\u00e4ndaren finns i databasen<\/h3>\n<p>N\u00e4r vi har f\u00e5tt v\u00e5r anv\u00e4ndare s\u00e5 m\u00e5ste vi dessutom kontrollera om den finns i v\u00e5r databas och autentisera den. Om den inte finns, s\u00e5 skapar vi en ny post f\u00f6r att representera anv\u00e4ndaren:<\/p>\n<pre><code class=\"language-php\">use App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Laravel\\Socialite\\Facades\\Socialite;\n\nRoute::get('\/auth\/callback', function () {\n   \/*\n   Get the user\n   *\/\n   $googleUser = Socialite::driver('google')-&gt;user();\n   \n   \/*\n   Create the user if it does not exist\n   Update the user if it exists\n   \n   Check for google_id in database\n   *\/\n   $user = User::updateOrCreate([\n       'google_id' =&gt; $googleUser-&gt;id,\n   ], [\n       'name' =&gt; $googleUser-&gt;name,\n       'email' =&gt; $googleUser-&gt;email,\n       'google_token' =&gt; $googleUser-&gt;token,\n       'google_refresh_token' =&gt; $googleUser-&gt;refreshToken,\n   ]);\n\n   \/*\n   Authenticates the user using the Auth facade\n   *\/\n    Auth::login($user);\n   \n    return redirect('\/dashboard');\n});<\/code><\/pre>\n<p>Om vi vill begr\u00e4nsa anv\u00e4ndarens \u00e5tkomstomr\u00e5den s\u00e5 kan vi anv\u00e4nda metoden <code>scopes<\/code>, som vi inkluderar i autentiserings-beg\u00e4randet. Detta kommer sedan att sl\u00e5 samman alla tidigare angivna omr\u00e5den med de angivna.<\/p>\n<p>Ett alternativ till detta \u00e4r att anv\u00e4nda metoden <code>setScopes<\/code> som skriver \u00f6ver alla andra befintliga router:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Socialite;\n\nreturn Socialite::driver('google')\n    -&gt;scopes(['read:user', 'write:user', 'public_repo'])\n    -&gt;redirect();\n\nreturn Socialite::driver('google')\n    -&gt;setScopes(['read:user', 'public_repo'])\n    -&gt;redirect();<\/code><\/pre>\n<h3>L\u00e5t oss titta p\u00e5 lite data<\/h3>\n<p>Nu n\u00e4r vi vet allt om hur vi f\u00e5r en anv\u00e4ndare efter callbacken, l\u00e5t oss titta p\u00e5 n\u00e5gra av de data som vi kan f\u00e5 fr\u00e5n detta.<\/p>\n<p>OAuth1-anv\u00e4ndaren har <code>token<\/code> och <code>tokenSecret<\/code>:<\/p>\n<pre><code class=\"language-php\">$user = Socialite::driver('google')-&gt;user();\n\n$token = $user-&gt;token;\n$tokenSecret = $user-&gt;tokenSecret;<\/code><\/pre>\n<p>OAuth2 ger <code>token<\/code>, <code>refreshToken<\/code> och <code>expiresIn<\/code>:<\/p>\n<pre><code class=\"language-php\">$user = Socialite::driver('google')-&gt;user();\n\n$token = $user-&gt;token;\n$refreshToken = $user-&gt;refreshToken;\n$expiresIn = $user-&gt;expiresIn;<\/code><\/pre>\n<p>B\u00e5de OAuth1 och OAuth2 tillhandah\u00e5ller <code>getId<\/code>, <code>getNickname<\/code>, <code>getName<\/code>, <code>getEmail<\/code> och <code>getAvatar<\/code>:<\/p>\n<pre><code class=\"language-php\">$user = Socialite::driver('google')-&gt;user();\n\n$user-&gt;getId();\n$user-&gt;getNickName();\n$user-&gt;getName();\n$user-&gt;getEmail();\n$user-&gt;getAvatar();<\/code><\/pre>\n<p>Och om vi vill f\u00e5 fram anv\u00e4ndaruppgifter fr\u00e5n en token (OAuth 2) eller en token och en hemlighet (OAuth 1), s\u00e5 tillhandah\u00e5ller Socialite tv\u00e5 metoder f\u00f6r detta: <code>userFromToken<\/code> och <code>userFromTokenAndSecret<\/code>:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Socialite;\n\n$user = Socialite::driver('google')-&gt;userFromToken($token);\n$user = Socialite::driver('twitter')-&gt;userFromTokenAndSecret($token, $secret);<\/code><\/pre>\n<h2>Laravel Sanctum<\/h2>\n<p>Laravel Sanctum \u00e4r ett l\u00e4ttviktigt autentiserings-system f\u00f6r SPAs (Single Page Applications) och mobilappar. Det l\u00e5ter anv\u00e4ndare generera flera API-tokens med specifika router. Dessa scopes anger till\u00e5tna \u00e5tg\u00e4rder f\u00f6r en token.<\/p>\n<h3>Anv\u00e4ndningsomr\u00e5den<\/h3>\n<p>Sanctum kan anv\u00e4ndas f\u00f6r att utf\u00e4rda API-tokens till anv\u00e4ndaren utan OAuth&#8217;s invecklade system. Dessa tokens har vanligtvis l\u00e5nga utg\u00e5ngstider, exempelvis \u00e5r, men kan \u00e5terkallas och \u00e5terskapas av anv\u00e4ndaren n\u00e4r som helst.<\/p>\n<h3>Installation och inst\u00e4llning<\/h3>\n<p>Vi kan installera detta via composer:<\/p>\n<pre><code class=\"language-php\">composer require laravel\/sanctum<\/code><\/pre>\n<p>Och vi m\u00e5ste publicera konfigurations- och migrerings-filerna:<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"Laravel\\Sanctum\\SanctumServiceProvider\"<\/code><\/pre>\n<p>Nu n\u00e4r vi har genererat nya migrerings-filer s\u00e5 m\u00e5ste vi migrera dem:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate:fresh<\/code><\/pre>\n<h3>Hur man utf\u00e4rdar API-tokens<\/h3>\n<p>Innan vi utf\u00e4rdar tokens s\u00e5 b\u00f6r v\u00e5r anv\u00e4ndarmodell anv\u00e4nda <strong>Laravel\\Sanctum\\HasApiTokens-egenskapen<\/strong>:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Sanctum\\HasApiTokens;\n\nclass User extends Authenticable\n{\n    use HasApiTokens;\n}<\/code><\/pre>\n<p>N\u00e4r vi har anv\u00e4ndaren s\u00e5 kan vi utf\u00e4rda en token genom att anropa metoden <code>createToken<\/code>. Som ett resultat s\u00e5 returneras en instans av <strong>Laravel\\Sanctum\\NewAccessToken<\/strong>.<\/p>\n<p>Vi kan anropa metoden <code>plainTextToken<\/code> p\u00e5 instansen <strong>NewAccessToken<\/strong> f\u00f6r att se tokens <strong>SHA-256-v\u00e4rde<\/strong> i klartext.<\/p>\n<h2>Tips och b\u00e4sta praxis f\u00f6r Laravel-autentisering<\/h2>\n<h3>Invalidering av sessioner p\u00e5 andra enheter<\/h3>\n<p>Som vi har diskuterat tidigare s\u00e5 \u00e4r det viktigt att ogiltigf\u00f6rklara sessionen n\u00e4r anv\u00e4ndaren loggar ut. Detta b\u00f6r dock \u00e4ven finnas tillg\u00e4ngligt som ett alternativ f\u00f6r alla \u00e4gda enheter.<\/p>\n<p>Den h\u00e4r funktionen anv\u00e4nds vanligtvis n\u00e4r anv\u00e4ndaren \u00e4ndrar eller uppdaterar sitt l\u00f6senord och vi vill ogiltigf\u00f6rklara deras session fr\u00e5n n\u00e5gon annan enhet.<\/p>\n<p>Med Auth-fasaden s\u00e5 \u00e4r detta en enkel uppgift att utf\u00f6ra. Med tanke p\u00e5 att den route som vi anv\u00e4nder har <code>auth<\/code> och <code>auth.session middleware<\/code> s\u00e5 kan vi anv\u00e4nda den statiska metoden <code>logoutOtherDevices<\/code> i fasaden:<\/p>\n<pre><code class=\"language-php\">Route::get('\/logout', [LogoutController::class, 'invoke'])\n    -&gt;middleware(['auth', 'auth.session']);\n\n<\/code><\/pre>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Auth;\n\nAuth::logoutOtherDevices($password);<\/code><\/pre>\n<h3>Konfiguration med Auth::routes()<\/h3>\n<p>Metoden routes i Auth-fasaden \u00e4r endast en hj\u00e4lpreda f\u00f6r att generera alla de router som kr\u00e4vs f\u00f6r anv\u00e4ndar-autentisering.<\/p>\n<p>Routerna omfattar inloggning (h\u00e4mta, skicka), utloggning (skicka), registrering (h\u00e4mta, skicka) och \u00e5terst\u00e4llning av l\u00f6senord\/e-post (h\u00e4mta, skicka).<\/p>\n<p>N\u00e4r du anropar metoden p\u00e5 fasaden s\u00e5 g\u00f6r den f\u00f6ljande:<\/p>\n<pre><code class=\"language-php\">public static function routes(array $options = [])\n{\n    if (!static::$app-&gt;providerIsLoaded(UiServiceProvider::class)) {\n        throw new RuntimeException('In order to use the Auth:;routes() method, please install the laravel\/ui package.');\n    }\n   \n    static::$app-&gt;make('router')-&gt;auth($options);\n}<\/code><\/pre>\n<p>Vi \u00e4r intresserade av vad som h\u00e4nder n\u00e4r den statiska metoden anropas p\u00e5 routen. Detta kan vara knepigt p\u00e5 grund av hur fasader fungerar, men f\u00f6ljande metod kan l\u00f6sa detta:<\/p>\n<pre><code class=\"language-php\">\/**\nRegister the typical authentication routes for an application.\n\n@param array $options\n@return void\n*\/\npublic function auth(array $options = [])\n{\n    \/\/ Authentication Routes...\n    $this-&gt;get('login', 'Auth\\LoginController@showLoginForm')-&gt;name('login');\n    $this-&gt;post('login', 'Auth\\LoginController@login');\n    $this-&gt;post('logout', 'Auth\\LoginController@logout')-&gt;name('logout');\n\n    \/\/ Registration Routes...\n    if ($options['register'] ?? true) {\n        $this-&gt;get('register', 'Auth\\RegisterController@showRegistrationForm')-&gt;name('register');\n        $this-&gt;post('register', 'Auth\\RegisterController@register');\n    }\n   \n    \/\/ Password Reset Routes...\n    if ($options['reset'] ?? true) {\n        $this-&gt;resetPassword();\n    }\n\n    \/\/ Email Verification Routes...\n    if ($options['verify'] ?? false) {\n        $this-&gt;emailVerification();\n    }\n}   <\/code><\/pre>\n<h3>Genererar inte router f\u00f6r e-postverifiering<\/h3>\n<p>Som standard s\u00e5 genererar den alla router f\u00f6rutom den f\u00f6r e-postverifiering. Vi kommer alltid att ha routerna Login och Logout, men de andra rutterna kan vi styra via options-matrisen.<\/p>\n<p>Om vi endast vill ha inloggning\/utloggning och registrering s\u00e5 kan vi skicka f\u00f6ljande options-matris:<\/p>\n<pre><code class=\"language-php\">$options = [\"register\" =&gt; true, \"reset\" =&gt; false, \"verify\" =&gt; false];<\/code><\/pre>\n<h3>Skydda router och anpassade vakter<\/h3>\n<p>Vi vill sedan f\u00f6rs\u00e4kra oss om att vissa router endast kan n\u00e5s av autentiserade anv\u00e4ndare. Detta kan snabbt g\u00f6ras genom att l\u00e4gga till antingen anrop av middleware-metoden p\u00e5 Route-fasaden eller kedja middleware-metoden p\u00e5 den:<\/p>\n<pre><code class=\"language-php\">Route::middleware('auth')-&gt;get('\/user', function (Request $request) {\n    return $request-&gt;user();\n});\n\nRoute::get('\/user', function (Request $request) {\n    return $request-&gt;user();\n})-&gt;middleware('auth');<\/code><\/pre>\n<p>Denna vakt s\u00e4kerst\u00e4ller att inkommande beg\u00e4randen \u00e4r autentiserade.<\/p>\n<h3>Bekr\u00e4ftelse av l\u00f6senord<\/h3>\n<p>F\u00f6r att \u00f6ka <a href=\"https:\/\/www.google.com\/url?q=https:\/\/kinqsta.com\/blog\/website-security-check\/&#038;sa=D&#038;source=editors&#038;ust=1665232246677644&#038;usg=AOvVaw0bmAaBiRrNMk9bLYHwv1jZ\">s\u00e4kerheten p\u00e5 webbplatsen<\/a> s\u00e5 vill man ofta bekr\u00e4fta en anv\u00e4ndares l\u00f6senord innan man g\u00e5r vidare med n\u00e5gon annan uppgift.<\/p>\n<p>Vi m\u00e5ste definiera en route fr\u00e5n vyn Bekr\u00e4fta l\u00f6senord f\u00f6r att hantera beg\u00e4randet. Den kommer att validera och omdirigera anv\u00e4ndaren till den avsedda destinationen. Samtidigt s\u00e5 ser vi till att v\u00e5rt l\u00f6senord visas bekr\u00e4ftat i sessionen. Som standard s\u00e5 m\u00e5ste l\u00f6senordet dessutom bekr\u00e4ftas p\u00e5 nytt var tredje timme, men detta kan \u00e4ndras i konfigurationsfilen i <strong>config\/auth.php<\/strong>:<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Support\\Facades\\Redirect;\n\nRoute::post('\/confirm-password', function (Request $request) {\n    if (!Hash::check($request-&gt;password, $request-&gt;user()-&gt;password)) {\n        return back()-&gt;withErrors([\n            'password' =&gt; ['The provided password does not match our records.']\n        ]);\n    }\n\n    $request-&gt;session()-&gt;passwordConfirmed();\n\n    return redirect()-&gt;intended();\n})-&gt;middleware(['auth']);<\/code><\/pre>\n<h3>Authenticable-kontraktet<\/h3>\n<p>Authenticable-kontraktet som finns p\u00e5 Illuminate\\Contracts\\Auth definierar en plan f\u00f6r vad UserProvider-fasaden ska implementera:<\/p>\n<pre><code class=\"language-php\">namespace Illuminate\\Contracts\\Auth;\n\ninterface Authenticable \n{\n    public function getAuthIdentifierName();\n    \n    public function getAuthIdentifier();\n    \n    public function getAuthPassord();\n  \n    public function getRememberToken();\n\n    public function setRememberToken($value);\n  \n    public function getrememberTokenName();\n}<\/code><\/pre>\n<p>Gr\u00e4nssnittet g\u00f6r det m\u00f6jligt f\u00f6r autentiserings-systemet att arbeta med alla &#8221;anv\u00e4ndar&#8221;-klasser som implementerar detta.<\/p>\n<p>Detta g\u00e4ller oavsett vilken ORM eller vilket lagrings-arkiv som anv\u00e4nds. Som standard s\u00e5 har Laravel App\\Models\\User som implementerar det h\u00e4r gr\u00e4nssnittet, och detta kan \u00e4ven ses i konfigurationsfilen:<\/p>\n<pre><code class=\"language-php\">return [\n    'providers' =&gt; [\n        'users' =&gt; [\n            'driver' =&gt; 'eloquent',\n            'model' =&gt; App\\Models\\User::class,\n        ],\n     ],\n];<\/code><\/pre>\n<h3>Autentiseringsh\u00e4ndelser<\/h3>\n<p>Det finns m\u00e5nga h\u00e4ndelser som skickas ut under hela autentiserings-processen.<\/p>\n<p>Beroende p\u00e5 dina m\u00e5l s\u00e5 kan du koppla lyssnare till dessa h\u00e4ndelser i din <code>EventServiceProvider<\/code>.<\/p>\n<figure style=\"width: 1003px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Listeners.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Listeners.png\" alt=\"En lista \u00f6ver Laravel-lyssnare som har genererats f\u00f6r v\u00e5r autentiserings-tj\u00e4nst\" width=\"1003\" height=\"1999\"><\/a><figcaption class=\"wp-caption-text\">En lista \u00f6ver Laravel-lyssnare som har genererats f\u00f6r v\u00e5r autentiserings-tj\u00e4nst<\/figcaption><\/figure>\n<h3>Skapa snabbt nya anv\u00e4ndare<\/h3>\n<p>Du kan snabbt skapa en ny anv\u00e4ndare via <strong>App\\User<\/strong>:<\/p>\n<pre><code class=\"language-php\">$user = new App\\User();\n$user-&gt;password = Hash::make('strong_password');\n$user-&gt;email = 'test-email@user.com';\n$user-&gt;name = 'Username';\n$user-&gt;save();<\/code><\/pre>\n<p>Eller genom den statiska metoden create p\u00e5 Anv\u00e4ndar-fasaden:<\/p>\n<pre><code class=\"language-php\">User::create([\n 'password' =&gt; Hash::make('strong-password'),\n 'email' =&gt; 'test-email@user.com',\n 'name' =&gt; 'username'\n]);<\/code><\/pre>\n<h2>Sammanfattning<\/h2>\n<p>Laravel-ekosystemet har m\u00e5nga startpaket f\u00f6r att f\u00e5 ig\u00e5ng din app med ett autentiserings-system, som Breeze och Jetstream. De \u00e4r v\u00e4ldigt anpassningsbara eftersom koden genereras p\u00e5 v\u00e5r sida. Vi kan dessutom \u00e4ndra den s\u00e5 mycket som vi vill, och anv\u00e4nda den som en bl\u00e5kopia om det kr\u00e4vs.<\/p>\n<p>Det finns m\u00e5nga s\u00e4kerhetsproblem n\u00e4r det g\u00e4ller autentisering och dess intrikat. Alla dessa kan dock enkelt l\u00f6sas med hj\u00e4lp av de verktyg som Laravel tillhandah\u00e5ller. Dessa verktyg \u00e4r mycket anpassningsbara och l\u00e4tta att anv\u00e4nda.<\/p>\n<p>Distribuera dina Laravel-appar snabbt och effektivt med v\u00e5r snabba hosting-tj\u00e4nst f\u00f6r Laravel. Se din app i aktion med en <a href=\"https:\/\/kinqsta.com\/se\/registrering\/?product_type=app-db\">kostnadsfri provperiod<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autentisering \u00e4r en av webbapplikationernas mest kritiska och viktiga funktioner. Webbramverk som Laravel erbjuder m\u00e5nga s\u00e4tt f\u00f6r anv\u00e4ndare att autentisera sig. Du kan dessutom implementera autentiserings-funktioner &#8230;<\/p>\n","protected":false},"author":267,"featured_media":51762,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[790],"class_list":["post-51761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>En omfattande guide till Laravel-autentisering<\/title>\n<meta name=\"description\" content=\"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"En omfattande guide till Laravel-autentisering\" \/>\n<meta property=\"og:description\" content=\"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstasweden\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-30T13:43:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-01T15:52:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Coman Cosmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Coman Cosmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\"},\"author\":{\"name\":\"Coman Cosmin\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\"},\"headline\":\"En omfattande guide till Laravel-autentisering\",\"datePublished\":\"2023-03-30T13:43:19+00:00\",\"dateModified\":\"2025-09-01T15:52:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\"},\"wordCount\":3508,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg\",\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\",\"url\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\",\"name\":\"En omfattande guide till Laravel-autentisering\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg\",\"datePublished\":\"2023-03-30T13:43:19+00:00\",\"dateModified\":\"2025-09-01T15:52:26+00:00\",\"description\":\"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/se\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinqsta.com\/se\/topics\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"En omfattande guide till Laravel-autentisering\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/se\/#website\",\"url\":\"https:\/\/kinqsta.com\/se\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/se\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/se\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/se\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstasweden\/\",\"https:\/\/x.com\/kinsta_se\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\",\"name\":\"Coman Cosmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g\",\"caption\":\"Coman Cosmin\"},\"description\":\"Cosmin Coman is a technology writer and developer with over 3 years of experience. Apart from writing for Kinsta, he has assisted in research at nuclear physics facilities and universities. Tech-savvy and integrated into the community, he always comes up with innovative solutions.\",\"url\":\"https:\/\/kinqsta.com\/se\/blog\/author\/comancosmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"En omfattande guide till Laravel-autentisering","description":"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/","og_locale":"sv_SE","og_type":"article","og_title":"En omfattande guide till Laravel-autentisering","og_description":"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.","og_url":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstasweden\/","article_published_time":"2023-03-30T13:43:19+00:00","article_modified_time":"2025-09-01T15:52:26+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg","type":"image\/jpeg"}],"author":"Coman Cosmin","twitter_card":"summary_large_image","twitter_description":"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.","twitter_image":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg","twitter_creator":"@kinsta_se","twitter_site":"@kinsta_se","twitter_misc":{"Skriven av":"Coman Cosmin","Ber\u00e4knad l\u00e4stid":"18 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/"},"author":{"name":"Coman Cosmin","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da"},"headline":"En omfattande guide till Laravel-autentisering","datePublished":"2023-03-30T13:43:19+00:00","dateModified":"2025-09-01T15:52:26+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/"},"wordCount":3508,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/se\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg","inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/","url":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/","name":"En omfattande guide till Laravel-autentisering","isPartOf":{"@id":"https:\/\/kinqsta.com\/se\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg","datePublished":"2023-03-30T13:43:19+00:00","dateModified":"2025-09-01T15:52:26+00:00","description":"Ta webb-appens s\u00e4kerhet till en ny niv\u00e5 med Laravel-autentisering. Nyttja b\u00e4st praxis f\u00f6r s\u00e4kerhet och l\u00e4s hur du till\u00e5ter s\u00e4ker \u00e5tkomst.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#primaryimage","url":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg","contentUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/laravel-queue.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/se\/blog\/laravel-autentisering\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/se\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinqsta.com\/se\/topics\/laravel\/"},{"@type":"ListItem","position":3,"name":"En omfattande guide till Laravel-autentisering"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/se\/#website","url":"https:\/\/kinqsta.com\/se\/","name":"Kinsta\u00ae","description":"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar","publisher":{"@id":"https:\/\/kinqsta.com\/se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/se\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstasweden\/","https:\/\/x.com\/kinsta_se","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da","name":"Coman Cosmin","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g","caption":"Coman Cosmin"},"description":"Cosmin Coman is a technology writer and developer with over 3 years of experience. Apart from writing for Kinsta, he has assisted in research at nuclear physics facilities and universities. Tech-savvy and integrated into the community, he always comes up with innovative solutions.","url":"https:\/\/kinqsta.com\/se\/blog\/author\/comancosmin\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts\/51761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/users\/267"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/comments?post=51761"}],"version-history":[{"count":13,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts\/51761\/revisions"}],"predecessor-version":[{"id":58238,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts\/51761\/revisions\/58238"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/translations\/dk"},{"href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51761\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/media\/51762"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/media?parent=51761"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/tags?post=51761"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/topic?post=51761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}