One benefit of using Inertia is that you don’t need a special authentication system, such as OAuth, to connect to your API. Since your data is provided through your controllers and served from the same domain as your JavaScript components, you don’t need to set up CORS.Instead, you can use whatever authentication system your server-side framework provides. Typically, this is a session-based system, such as Laravel’s.
Laravel Starter Kits
Laravel’s starter kits provide out-of-the-box scaffolding for new Inertia applications, including authentication.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Inertia.js Documentation","colors":{"primary":"#2563EB","light":"#2563EB","dark":"#2563EB"},"logo":{"light":"https://mintcdn.com/inertiajs/bn08VjbJ_c_aQzAL/logo/light.svg?fit=max\u0026auto=format\u0026n=bn08VjbJ_c_aQzAL\u0026q=85\u0026s=f2f2d86f9100bb768e5253f3cb362a68","dark":"https://mintcdn.com/inertiajs/bn08VjbJ_c_aQzAL/logo/dark.svg?fit=max\u0026auto=format\u0026n=bn08VjbJ_c_aQzAL\u0026q=85\u0026s=65becf915d0a3ccea86facc9dd426631"},"favicon":"https://mintcdn.com/inertiajs/bn08VjbJ_c_aQzAL/favicon.svg?fit=max\u0026auto=format\u0026n=bn08VjbJ_c_aQzAL\u0026q=85\u0026s=f92d2f2b581ae5f845f74ce88b7e08fc","navbar":{},"footer":{"socials":{"x":"https://x.com/inertiajs","github":"https://github.com/inertiajs"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"inertiajs","hasAudioNarration":false,"actualSubdomain":"inertiajs","customDomains":["inertiajs.com"],"gitSource":{"type":"github","owner":"inertiajs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad7c4c62b5ff80356f2df07","collectionId":"71bd5dba-cef4-42c4-b88a-fd8750232d3b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad7c4c62b5ff80356f2df07"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad7c4c62b5ff80356f2df07","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"The Basics","count":37},{"language":"default","tag":"Advanced","count":32},{"language":"default","tag":"Data \u0026 Props","count":22},{"language":"default","tag":"Core Concepts","count":9},{"language":"default","tag":"Getting Started","count":9},{"language":"default","tag":"Security","count":8},{"language":"default","tag":"Installation","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"snippets/docs.css","content":"svg[style*=\"regular/s.svg\"]{mask-image:url(/docs/assets/svelte.svg)!important}"},{"filePath":"style.css","content":"/* latin-ext */\n@font-face {\n font-family: 'Instrument Sans';\n font-style: normal;\n font-weight: 400 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/instrumentsans/v4/pxiTypc9vsFDm051Uf6KVwgkfoSxQ0GsQv8ToedPibnr0She1YmV.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Instrument Sans';\n font-style: normal;\n font-weight: 400 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/instrumentsans/v4/pxiTypc9vsFDm051Uf6KVwgkfoSxQ0GsQv8ToedPibnr0SZe1Q.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\nbody{font-family:\"Instrument Sans\";font-weight:400}h1,h2,h3,h4{letter-spacing:-.025rem!important}code,pre{font-family:\"Geist Mono\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}.font-semibold,b,h1,h2,h3,h4,strong{font-weight:500!important}.prose :where(a):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)){font-weight:500!important;color:rgb(var(--primary-light))!important}.codeblock-dark div:not(:last-child){color:#fafafa}"}],"page":{"pagePath":"v3/security/authentication","slug":"/v3/security/authentication","pageMetadata":{"title":"Authentication","description":null,"href":"/v3/security/authentication"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,..._provideComponents(),...props.components},{Card}=_components;if(!Card)_missingMdxReference(`Card`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`One benefit of using Inertia is that you don’t need a special authentication system, such as OAuth, to connect to your API. Since your data is provided through your controllers and served from the same domain as your JavaScript components, you don’t need to set up CORS.`}),`\n`,_jsx(_components.p,{children:`Instead, you can use whatever authentication system your server-side framework provides. Typically, this is a session-based system, such as Laravel’s.`}),`\n`,_jsx(Card,{icon:`laravel`,title:`Laravel Starter Kits`,href:`https://laravel.com/docs/starter-kits`,arrow:`true`,cta:`Start building`,children:_jsx(_components.p,{children:`Laravel’s starter kits provide out-of-the-box scaffolding for new Inertia applications, including authentication.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Authentication","description":null,"href":"/v3/security/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/inertiajs/36792f50c91c3c92/snippets/docs.js"],"subdomain":"inertiajs","siteName":"Inertia.js Documentation","title":"Authentication - Inertia.js Documentation","navMaps":{"firstHrefInVersion":{"3.x":{"href":"/v3/security/authentication","matchLevel":0},"2.x":{"href":"/v2/security/authentication","matchLevel":1},"1.x":{"href":"/v1/getting-started","matchLevel":3}},"firstHrefInLanguage":{}},"lastModified":"2026-10-01T11:12:53.320Z","originalFileLocation":"v3/security/authentication.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Inertia.js Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication - Inertia.js Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Inertia.js Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://inertiajs.com/docs/v3/security/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://inertiajs.mintlify.app/_mintlify/api/og/v2?division=Security\u0026amp;title=Authentication\u0026amp;theme=aa36b3cd937ed0b43c869952\u0026amp;signature=dc84b96c1504cdd70109b12abc703a2a90a55ac2c1ccd45caa6b0c737e25a4cf\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Authentication - Inertia.js Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://inertiajs.mintlify.app/_mintlify/api/og/v2?division=Security\u0026amp;title=Authentication\u0026amp;theme=aa36b3cd937ed0b43c869952\u0026amp;signature=dc84b96c1504cdd70109b12abc703a2a90a55ac2c1ccd45caa6b0c737e25a4cf\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/inertiajs/EyXVA2gC5ZC6xyfv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Inertia.js Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://inertiajs.com/docs/v3/security/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/v3/security/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://inertiajs.com/#organization\",\"name\":\"Inertia.js Documentation\",\"url\":\"https://inertiajs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/inertiajs/bn08VjbJ_c_aQzAL/logo/light.svg?fit=max\u0026auto=format\u0026n=bn08VjbJ_c_aQzAL\u0026q=85\u0026s=f2f2d86f9100bb768e5253f3cb362a68\"}},{\"@type\":\"WebSite\",\"@id\":\"https://inertiajs.com/docs#website\",\"name\":\"Inertia.js Documentation\",\"url\":\"https://inertiajs.com/docs\",\"publisher\":{\"@id\":\"https://inertiajs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://inertiajs.com/docs/v3/security/authentication#webpage\",\"url\":\"https://inertiajs.com/docs/v3/security/authentication\",\"name\":\"Authentication\",\"dateModified\":\"2026-10-01T11:12:53.320Z\",\"isPartOf\":{\"@id\":\"https://inertiajs.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://inertiajs.com/docs/v3/security/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://inertiajs.com/docs/v3/security/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inertia.js Documentation\",\"item\":\"https://inertiajs.com/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://inertiajs.com/docs/v3/security/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://inertiajs.com/docs/v3/security/authentication#article\",\"headline\":\"Authentication\",\"name\":\"Authentication\",\"url\":\"https://inertiajs.com/docs/v3/security/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://inertiajs.com/docs/v3/security/authentication#webpage\"},\"dateModified\":\"2026-10-01T11:12:53.320Z\",\"publisher\":{\"@id\":\"https://inertiajs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://inertiajs.com/docs#website\"}}]}\u003c/script>","siteName":"Inertia.js Documentation","nav":{"global":{},"versions":[{"version":"3.x","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/v3/getting-started"},{"title":"Demo Application","href":"/v3/getting-started/demo-application"},{"title":"Upgrade Guide for v3.0","href":"/v3/getting-started/upgrade-guide"}]},{"group":"Installation","pages":[{"title":"Server-Side Setup","href":"/v3/installation/server-side-setup"},{"title":"Client-Side Setup","href":"/v3/installation/client-side-setup"}]},{"group":"Core Concepts","pages":[{"title":"Who Is Inertia.js For?","href":"/v3/core-concepts/who-is-it-for"},{"title":"How It Works","href":"/v3/core-concepts/how-it-works"},{"title":"The Protocol","href":"/v3/core-concepts/the-protocol"}]},{"group":"The Basics","pages":[{"title":"Pages","href":"/v3/the-basics/pages"},{"title":"Responses","href":"/v3/the-basics/responses"},{"title":"Redirects","href":"/v3/the-basics/redirects"},{"title":"Routing","href":"/v3/the-basics/routing"},{"title":"Title \u0026 Meta","href":"/v3/the-basics/title-and-meta"},{"title":"Links","href":"/v3/the-basics/links"},{"title":"Manual Visits","href":"/v3/the-basics/manual-visits"},{"title":"Instant Visits","href":"/v3/the-basics/instant-visits"},{"title":"Forms","href":"/v3/the-basics/forms"},{"title":"HTTP Requests","href":"/v3/the-basics/http-requests"},{"title":"Optimistic Updates","href":"/v3/the-basics/optimistic-updates"},{"title":"File Uploads","href":"/v3/the-basics/file-uploads"},{"title":"Validation","href":"/v3/the-basics/validation"},{"title":"Layouts","href":"/v3/the-basics/layouts"},{"title":"View Transitions","href":"/v3/the-basics/view-transitions"}]},{"group":"Data \u0026 Props","pages":[{"title":"Shared Data","href":"/v3/data-props/shared-data"},{"title":"Flash Data","href":"/v3/data-props/flash-data"},{"title":"Partial Reloads","href":"/v3/data-props/partial-reloads"},{"title":"Deferred Props","href":"/v3/data-props/deferred-props"},{"title":"Merging Props","href":"/v3/data-props/merging-props"},{"title":"Once Props","href":"/v3/data-props/once-props"},{"title":"Polling","href":"/v3/data-props/polling"},{"title":"Prefetching","href":"/v3/data-props/prefetching"},{"title":"Load When Visible","href":"/v3/data-props/load-when-visible"},{"title":"Infinite Scroll","href":"/v3/data-props/infinite-scroll"},{"title":"Remembering State","description":null,"href":"/v3/data-props/remembering-state"}]},{"group":"Security","pages":[{"title":"Authentication","href":"/v3/security/authentication"},{"title":"Authorization","description":null,"href":"/v3/security/authorization"},{"title":"CSRF Protection","href":"/v3/security/csrf-protection"},{"title":"History Encryption","href":"/v3/security/history-encryption"}]},{"group":"Advanced","pages":[{"title":"Asset Versioning","href":"/v3/advanced/asset-versioning"},{"title":"Big Integers","href":"/v3/advanced/big-integers"},{"title":"Code Splitting","href":"/v3/advanced/code-splitting"},{"title":"DevTools","href":"/v3/advanced/devtools"},{"title":"Error Handling","href":"/v3/advanced/error-handling"},{"title":"Events","href":"/v3/advanced/events"},{"title":"Progress Indicators","href":"/v3/advanced/progress-indicators"},{"title":"Scroll Management","href":"/v3/advanced/scroll-management"},{"title":"Server-Side Rendering (SSR)","href":"/v3/advanced/server-side-rendering"},{"title":"Testing","href":"/v3/advanced/testing"},{"title":"TypeScript","href":"/v3/advanced/typescript"}]}]},{"version":"2.x","pages":[{"title":"2.x","href":"/v2/security/authentication"}]},{"version":"1.x","pages":[{"title":"1.x","href":"/v1/getting-started"}]}]},"title":"Authentication - Inertia.js Documentation","buildId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","deploymentId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","dynamics":[],"chunks":[]}