[{"data":1,"prerenderedAt":1308},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-sessions":152,"-core-concepts-sessions-surround":1303},[4,42,68,110,131],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"Getting Started","/getting-started","1.getting-started/0.index",[9,12,17,22,27,32,37],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-sparkles",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/getting-started/installation","1.getting-started/1.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Configuration","/getting-started/configuration","1.getting-started/2.configuration","i-lucide-settings",{"title":23,"path":24,"stem":25,"icon":26},"Client Setup","/getting-started/client-setup","1.getting-started/3.client-setup","i-lucide-monitor",{"title":28,"path":29,"stem":30,"icon":31},"Type Augmentation","/getting-started/type-augmentation","1.getting-started/4.type-augmentation","i-lucide-type",{"title":33,"path":34,"stem":35,"icon":36},"Schema Generation (NuxtHub)","/getting-started/schema-generation","1.getting-started/5.schema-generation","i-lucide-database",{"title":38,"path":39,"stem":40,"icon":41},"How It Works","/getting-started/how-it-works","1.getting-started/6.how-it-works","i-lucide-workflow",{"title":43,"path":44,"stem":45,"children":46,"page":67},"Core Concepts","/core-concepts","2.core-concepts",[47,51,55,59,63],{"title":48,"path":49,"stem":50},"serverAuth()","/core-concepts/server-auth","2.core-concepts/1.server-auth",{"title":52,"path":53,"stem":54},"Sessions","/core-concepts/sessions","2.core-concepts/2.sessions",{"title":56,"path":57,"stem":58},"Route Protection","/core-concepts/route-protection","2.core-concepts/3.route-protection",{"title":60,"path":61,"stem":62},"Auto‑Imports and Aliases","/core-concepts/auto-imports-aliases","2.core-concepts/4.auto-imports-aliases",{"title":64,"path":65,"stem":66},"Security & Caveats","/core-concepts/security-caveats","2.core-concepts/5.security-caveats",false,{"title":69,"path":70,"stem":71,"children":72,"page":67},"Guides","/guides","3.guides",[73,77,81,85,89,94,98,102,106],{"title":74,"path":75,"stem":76},"Role‑Based Access","/guides/role-based-access","3.guides/1.role-based-access",{"title":78,"path":79,"stem":80},"OAuth Providers","/guides/oauth-providers","3.guides/2.oauth-providers",{"title":82,"path":83,"stem":84},"Custom Database","/guides/custom-database","3.guides/3.custom-database",{"title":86,"path":87,"stem":88},"Database-less Mode","/guides/database-less-mode","3.guides/4.database-less-mode",{"title":90,"path":91,"stem":92,"icon":93},"External Auth Backend","/guides/external-auth-backend","3.guides/5.external-auth-backend","i-lucide-server",{"title":95,"path":96,"stem":97},"Migrating from nuxt-auth-utils","/guides/migrate-from-nuxt-auth-utils","3.guides/6.migrate-from-nuxt-auth-utils",{"title":99,"path":100,"stem":101},"Two-Factor Authentication (TOTP + Backup Codes)","/guides/two-factor-auth","3.guides/7.two-factor-auth",{"title":103,"path":104,"stem":105},"Testing","/guides/testing","3.guides/8.testing",{"title":107,"path":108,"stem":109},"Production Deployment","/guides/production-deployment","3.guides/9.production-deployment",{"title":111,"path":112,"stem":113,"children":114,"page":67},"Integrations","/integrations","4.integrations",[115,119,123,127],{"title":116,"path":117,"stem":118},"NuxtHub","/integrations/nuxthub","4.integrations/1.nuxthub",{"title":120,"path":121,"stem":122},"DevTools","/integrations/devtools","4.integrations/2.devtools",{"title":124,"path":125,"stem":126},"Convex","/integrations/convex","4.integrations/3.convex",{"title":128,"path":129,"stem":130},"i18n","/integrations/i18n","4.integrations/4.i18n",{"title":132,"path":133,"stem":134,"children":135,"page":67},"API Reference","/api","5.api",[136,140,144,148],{"title":137,"path":138,"stem":139},"Composables","/api/composables","5.api/1.composables",{"title":141,"path":142,"stem":143},"Server Utilities","/api/server-utils","5.api/2.server-utils",{"title":145,"path":146,"stem":147},"Components","/api/components","5.api/3.components",{"title":149,"path":150,"stem":151},"Types","/api/types","5.api/4.types",{"id":153,"title":52,"body":154,"description":1297,"extension":1298,"links":1299,"meta":1300,"navigation":184,"path":53,"seo":1301,"stem":54,"__hash__":1302},"docs/2.core-concepts/2.sessions.md",{"type":155,"value":156,"toc":1286},"minimark",[157,228,232,310,315,318,364,367,396,507,512,519,527,590,594,604,608,615,618,684,687,755,758,762,765,769,773,936,940,943,1025,1029,1032,1140,1144,1147,1279,1282],[158,159,160],"code-collapse",{},[161,162,168],"pre",{"className":163,"code":164,"filename":165,"language":166,"meta":167,"style":167},"language-txt shiki shiki-themes one-light synthwave-84 synthwave-84","Handle sessions with @onmax/nuxt-better-auth using useUserSession().\n\n- `useUserSession()` is auto-imported and returns: user, session, loggedIn, ready, signOut, fetchSession\n- SSR: session is fetched server-side via cookies and hydrated — `ready` is `true` after hydration\n- Client: use `useSignIn()`, `useSignUp()`, or `useAuthClient()` for Better Auth client methods\n- Split model: use `useUserSession()` in pages/components, use `requireUserSession(event)` in server handlers\n- Configure session lifetime in `server/auth.config.ts` via `session.expiresIn` and `session.cookieCache`\n- Use `\u003CBetterAuthState>` or `ready` ref to avoid loading flashes\n- Force refresh: `fetchSession({ force: true })`\n","Prompt","txt","",[169,170,171,179,186,192,198,204,210,216,222],"code",{"__ignoreMap":167},[172,173,176],"span",{"class":174,"line":175},"line",1,[172,177,178],{},"Handle sessions with @onmax/nuxt-better-auth using useUserSession().\n",[172,180,182],{"class":174,"line":181},2,[172,183,185],{"emptyLinePlaceholder":184},true,"\n",[172,187,189],{"class":174,"line":188},3,[172,190,191],{},"- `useUserSession()` is auto-imported and returns: user, session, loggedIn, ready, signOut, fetchSession\n",[172,193,195],{"class":174,"line":194},4,[172,196,197],{},"- SSR: session is fetched server-side via cookies and hydrated — `ready` is `true` after hydration\n",[172,199,201],{"class":174,"line":200},5,[172,202,203],{},"- Client: use `useSignIn()`, `useSignUp()`, or `useAuthClient()` for Better Auth client methods\n",[172,205,207],{"class":174,"line":206},6,[172,208,209],{},"- Split model: use `useUserSession()` in pages/components, use `requireUserSession(event)` in server handlers\n",[172,211,213],{"class":174,"line":212},7,[172,214,215],{},"- Configure session lifetime in `server/auth.config.ts` via `session.expiresIn` and `session.cookieCache`\n",[172,217,219],{"class":174,"line":218},8,[172,220,221],{},"- Use `\u003CBetterAuthState>` or `ready` ref to avoid loading flashes\n",[172,223,225],{"class":174,"line":224},9,[172,226,227],{},"- Force refresh: `fetchSession({ force: true })`\n",[229,230,231],"p",{},"Use this page when you want to understand how session state moves between SSR, hydration, client updates, and server-side access.",[161,233,238],{"className":234,"code":235,"filename":236,"language":237,"meta":167,"style":167},"language-ts shiki shiki-themes one-light synthwave-84 synthwave-84","const {\n  user,\n  session,\n  loggedIn,\n  ready,\n  signOut,\n  fetchSession,\n} = useUserSession()\n","pages/dashboard.vue","ts",[169,239,240,250,259,266,273,280,287,294],{"__ignoreMap":167},[172,241,242,246],{"class":174,"line":175},[172,243,245],{"class":244},"sqe1H","const",[172,247,249],{"class":248},"s17Py"," {\n",[172,251,252,256],{"class":174,"line":181},[172,253,255],{"class":254},"s6Rhl","  user",[172,257,258],{"class":248},",\n",[172,260,261,264],{"class":174,"line":188},[172,262,263],{"class":254},"  session",[172,265,258],{"class":248},[172,267,268,271],{"class":174,"line":194},[172,269,270],{"class":254},"  loggedIn",[172,272,258],{"class":248},[172,274,275,278],{"class":174,"line":200},[172,276,277],{"class":254},"  ready",[172,279,258],{"class":248},[172,281,282,285],{"class":174,"line":206},[172,283,284],{"class":254},"  signOut",[172,286,258],{"class":248},[172,288,289,292],{"class":174,"line":212},[172,290,291],{"class":254},"  fetchSession",[172,293,258],{"class":248},[172,295,296,299,303,307],{"class":174,"line":218},[172,297,298],{"class":248},"} ",[172,300,302],{"class":301},"sQBpM","=",[172,304,306],{"class":305},"sfT9l"," useUserSession",[172,308,309],{"class":248},"()\n",[311,312,314],"h2",{"id":313},"ssr-behavior","SSR behavior",[229,316,317],{},"During server-side rendering (SSR), the module fetches the session using incoming request cookies and populates state before rendering. A client plugin then keeps the state in sync after hydration.",[319,320,321,345,358],"ul",{},[322,323,324,328,329,332,333,336,337,340,341,344],"li",{},[325,326,327],"strong",{},"Server render:"," ",[169,330,331],{},"user"," and ",[169,334,335],{},"session"," are set when a valid session cookie exists, and ",[169,338,339],{},"ready"," is ",[169,342,343],{},"true",".",[322,346,347,328,350,353,354,357],{},[325,348,349],{},"Server runtime client access:",[169,351,352],{},"useAuthClient()"," returns ",[169,355,356],{},"null"," during SSR.",[322,359,360,363],{},[325,361,362],{},"After hydration:"," State stays in sync with client-side updates.",[229,365,366],{},"Use a split model:",[319,368,369,384],{},[322,370,371,372,375,376,379,380,383],{},"In pages and components, use ",[169,373,374],{},"useUserSession()"," state and SSR-safe fetch helpers (",[169,377,378],{},"useAuthRequestFetch",", ",[169,381,382],{},"useAuthAsyncData",").",[322,385,386,387,379,390,379,393,383],{},"In server handlers and routes, use server utilities (",[169,388,389],{},"serverAuth",[169,391,392],{},"getUserSession",[169,394,395],{},"requireUserSession",[161,397,400],{"className":234,"code":398,"filename":399,"language":237,"meta":167,"style":167},"export default defineEventHandler(async (event) => {\n  const { user } = await requireUserSession(event)\n  return { id: user.id, email: user.email }\n})\n","server/api/profile.get.ts",[169,401,402,435,464,502],{"__ignoreMap":167},[172,403,404,407,411,414,417,420,423,427,430,433],{"class":174,"line":175},[172,405,406],{"class":244},"export",[172,408,410],{"class":409},"sKg8T"," default",[172,412,413],{"class":305}," defineEventHandler",[172,415,416],{"class":248},"(",[172,418,419],{"class":244},"async",[172,421,422],{"class":248}," (",[172,424,426],{"class":425},"sgisi","event",[172,428,429],{"class":248},") ",[172,431,432],{"class":244},"=>",[172,434,249],{"class":248},[172,436,437,440,443,445,448,450,453,456,458,461],{"class":174,"line":181},[172,438,439],{"class":244},"  const",[172,441,442],{"class":248}," { ",[172,444,331],{"class":254},[172,446,447],{"class":248}," } ",[172,449,302],{"class":301},[172,451,452],{"class":244}," await",[172,454,455],{"class":305}," requireUserSession",[172,457,416],{"class":248},[172,459,426],{"class":460},"sYvLG",[172,462,463],{"class":248},")\n",[172,465,466,469,471,474,478,482,484,486,488,491,493,495,497,499],{"class":174,"line":188},[172,467,468],{"class":244},"  return",[172,470,442],{"class":248},[172,472,473],{"class":460},"id",[172,475,477],{"class":476},"sVnqq",":",[172,479,481],{"class":480},"svFNh"," user",[172,483,344],{"class":248},[172,485,473],{"class":460},[172,487,379],{"class":248},[172,489,490],{"class":460},"email",[172,492,477],{"class":476},[172,494,481],{"class":480},[172,496,344],{"class":248},[172,498,490],{"class":460},[172,500,501],{"class":248}," }\n",[172,503,504],{"class":174,"line":194},[172,505,506],{"class":248},"})\n",[508,509,511],"h3",{"id":510},"optional-skip-hydrated-ssr-session-fetch","Optional: Skip Hydrated SSR Session Fetch",[229,513,514,515,518],{},"By default, SSR pages still bootstrap the client session with an initial ",[169,516,517],{},"/api/auth/get-session"," request. This enables Better Auth's session refresh behavior.",[229,520,521,522,332,524,526],{},"If you want to skip that request when ",[169,523,331],{},[169,525,335],{}," are already hydrated from SSR, enable the option below:",[161,528,531],{"className":234,"code":529,"filename":530,"language":237,"meta":167,"style":167},"export default defineNuxtConfig({\n  auth: {\n    session: {\n      skipHydratedSsrGetSession: true,\n    },\n  },\n})\n","nuxt.config.ts",[169,532,533,545,554,563,576,581,586],{"__ignoreMap":167},[172,534,535,537,539,542],{"class":174,"line":175},[172,536,406],{"class":244},[172,538,410],{"class":409},[172,540,541],{"class":305}," defineNuxtConfig",[172,543,544],{"class":248},"({\n",[172,546,547,550,552],{"class":174,"line":181},[172,548,549],{"class":460},"  auth",[172,551,477],{"class":476},[172,553,249],{"class":248},[172,555,556,559,561],{"class":174,"line":188},[172,557,558],{"class":460},"    session",[172,560,477],{"class":476},[172,562,249],{"class":248},[172,564,565,568,570,574],{"class":174,"line":194},[172,566,567],{"class":460},"      skipHydratedSsrGetSession",[172,569,477],{"class":476},[172,571,573],{"class":572},"s3ZNE"," true",[172,575,258],{"class":248},[172,577,578],{"class":174,"line":200},[172,579,580],{"class":248},"    },\n",[172,582,583],{"class":174,"line":206},[172,584,585],{"class":248},"  },\n",[172,587,588],{"class":174,"line":212},[172,589,506],{"class":248},[591,592,593],"warning",{},"When enabled, the module skips Better Auth's session refresh manager on those SSR pages (focus, polling, broadcast). Session state will still sync after auth actions that trigger a session signal.",[229,595,596,597,599,600,603],{},"For prerendered or cached pages, the client plugin fetches the session after mount. Use ",[169,598,339],{}," or ",[169,601,602],{},"\u003CBetterAuthState>"," to avoid flashes in those cases.",[311,605,607],{"id":606},"auth-readiness-vs-domain-data-readiness","Auth Readiness vs Domain Data Readiness",[229,609,610,332,612,614],{},[169,611,339],{},[169,613,602],{}," guarantee only that auth hydration has finished. They do not guarantee that additional auth-bound domain data (billing state, role membership, entitlements) has loaded.",[229,616,617],{},"When rendering UI that depends on both auth and domain data, fetch that domain data SSR-first:",[161,619,622],{"className":234,"code":620,"filename":621,"language":237,"meta":167,"style":167},"const { data: customerState } = await useFetch('/api/auth/customer/state')\nconst { data: customerById } = await useFetch('/api/auth/customer/123/state')\n","pages/app.vue",[169,623,624,656],{"__ignoreMap":167},[172,625,626,628,630,633,636,639,641,643,645,648,650,654],{"class":174,"line":175},[172,627,245],{"class":244},[172,629,442],{"class":248},[172,631,632],{"class":460},"data",[172,634,635],{"class":248},": ",[172,637,638],{"class":254},"customerState",[172,640,447],{"class":248},[172,642,302],{"class":301},[172,644,452],{"class":244},[172,646,647],{"class":305}," useFetch",[172,649,416],{"class":248},[172,651,653],{"class":652},"sPAZv","'/api/auth/customer/state'",[172,655,463],{"class":248},[172,657,658,660,662,664,666,669,671,673,675,677,679,682],{"class":174,"line":181},[172,659,245],{"class":244},[172,661,442],{"class":248},[172,663,632],{"class":460},[172,665,635],{"class":248},[172,667,668],{"class":254},"customerById",[172,670,447],{"class":248},[172,672,302],{"class":301},[172,674,452],{"class":244},[172,676,647],{"class":305},[172,678,416],{"class":248},[172,680,681],{"class":652},"'/api/auth/customer/123/state'",[172,683,463],{"class":248},[229,685,686],{},"Endpoint payloads are inferred from your Better Auth config (core + plugins), including dynamic auth paths.",[161,688,690],{"className":234,"code":689,"filename":621,"language":237,"meta":167,"style":167},"const { data: customerState, pending, error } = await useAuthAsyncData(\n  'customer-state',\n  requestFetch => requestFetch('/api/auth/customer/state'),\n)\n",[169,691,692,726,733,751],{"__ignoreMap":167},[172,693,694,696,698,700,702,704,706,709,711,714,716,718,720,723],{"class":174,"line":175},[172,695,245],{"class":244},[172,697,442],{"class":248},[172,699,632],{"class":460},[172,701,635],{"class":248},[172,703,638],{"class":254},[172,705,379],{"class":248},[172,707,708],{"class":254},"pending",[172,710,379],{"class":248},[172,712,713],{"class":254},"error",[172,715,447],{"class":248},[172,717,302],{"class":301},[172,719,452],{"class":244},[172,721,722],{"class":305}," useAuthAsyncData",[172,724,725],{"class":248},"(\n",[172,727,728,731],{"class":174,"line":181},[172,729,730],{"class":652},"  'customer-state'",[172,732,258],{"class":248},[172,734,735,738,741,744,746,748],{"class":174,"line":188},[172,736,737],{"class":425},"  requestFetch",[172,739,740],{"class":244}," =>",[172,742,743],{"class":305}," requestFetch",[172,745,416],{"class":248},[172,747,653],{"class":652},[172,749,750],{"class":248},"),\n",[172,752,753],{"class":174,"line":194},[172,754,463],{"class":248},[229,756,757],{},"This prevents first-paint UI flips where unauthenticated defaults briefly appear before domain data resolves.",[311,759,761],{"id":760},"cookie-vs-database-sessions","Cookie vs Database Sessions",[229,763,764],{},"Database sessions (default): stored in DB, revocable, visible in admin\nJWE sessions (database-less): encrypted cookie, no server storage",[766,767],"read-more",{"to":768},"https://www.better-auth.com/docs/concepts/session-management",[311,770,772],{"id":771},"handling-loading-state","Handling Loading State",[161,774,779],{"className":775,"code":776,"filename":777,"language":778,"meta":167,"style":167},"language-vue shiki shiki-themes one-light synthwave-84 synthwave-84","\u003Cscript setup lang=\"ts\">\nconst { user, loggedIn, ready } = useUserSession()\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"!ready\">Loading...\u003C/div>\n  \u003Cdiv v-else-if=\"loggedIn\">Welcome, {{ user?.name }}\u003C/div>\n  \u003Cdiv v-else>Please log in\u003C/div>\n\u003C/template>\n","pages/protected.vue","vue",[169,780,781,807,833,842,846,855,883,908,928],{"__ignoreMap":167},[172,782,783,787,791,795,798,801,804],{"class":174,"line":175},[172,784,786],{"class":785},"sL9le","\u003C",[172,788,790],{"class":789},"stweg","script",[172,792,794],{"class":793},"s0frj"," setup",[172,796,797],{"class":793}," lang",[172,799,302],{"class":800},"sNM9w",[172,802,803],{"class":652},"\"ts\"",[172,805,806],{"class":785},">\n",[172,808,809,811,814,816,818,821,823,825,827,829,831],{"class":174,"line":181},[172,810,245],{"class":244},[172,812,442],{"class":813},"sEEOt",[172,815,331],{"class":254},[172,817,379],{"class":813},[172,819,820],{"class":254},"loggedIn",[172,822,379],{"class":813},[172,824,339],{"class":254},[172,826,447],{"class":813},[172,828,302],{"class":301},[172,830,306],{"class":305},[172,832,309],{"class":813},[172,834,835,838,840],{"class":174,"line":188},[172,836,837],{"class":785},"\u003C/",[172,839,790],{"class":789},[172,841,806],{"class":785},[172,843,844],{"class":174,"line":194},[172,845,185],{"emptyLinePlaceholder":184},[172,847,848,850,853],{"class":174,"line":200},[172,849,786],{"class":785},[172,851,852],{"class":789},"template",[172,854,806],{"class":785},[172,856,857,860,863,866,868,871,874,877,879,881],{"class":174,"line":206},[172,858,859],{"class":785},"  \u003C",[172,861,862],{"class":789},"div",[172,864,865],{"class":793}," v-if",[172,867,302],{"class":800},[172,869,870],{"class":652},"\"!ready\"",[172,872,873],{"class":785},">",[172,875,876],{"class":813},"Loading...",[172,878,837],{"class":785},[172,880,862],{"class":789},[172,882,806],{"class":785},[172,884,885,887,889,892,894,897,899,902,904,906],{"class":174,"line":212},[172,886,859],{"class":785},[172,888,862],{"class":789},[172,890,891],{"class":793}," v-else-if",[172,893,302],{"class":800},[172,895,896],{"class":652},"\"loggedIn\"",[172,898,873],{"class":785},[172,900,901],{"class":813},"Welcome, {{ user?.name }}",[172,903,837],{"class":785},[172,905,862],{"class":789},[172,907,806],{"class":785},[172,909,910,912,914,917,919,922,924,926],{"class":174,"line":218},[172,911,859],{"class":785},[172,913,862],{"class":789},[172,915,916],{"class":793}," v-else",[172,918,873],{"class":785},[172,920,921],{"class":813},"Please log in",[172,923,837],{"class":785},[172,925,862],{"class":789},[172,927,806],{"class":785},[172,929,930,932,934],{"class":174,"line":224},[172,931,837],{"class":785},[172,933,852],{"class":789},[172,935,806],{"class":785},[311,937,939],{"id":938},"server-side-session-access","Server-Side Session Access",[229,941,942],{},"For server handlers and API routes, use the server utilities:",[161,944,945],{"className":234,"code":398,"filename":399,"language":237,"meta":167,"style":167},[169,946,947,969,991,1021],{"__ignoreMap":167},[172,948,949,951,953,955,957,959,961,963,965,967],{"class":174,"line":175},[172,950,406],{"class":244},[172,952,410],{"class":409},[172,954,413],{"class":305},[172,956,416],{"class":248},[172,958,419],{"class":244},[172,960,422],{"class":248},[172,962,426],{"class":425},[172,964,429],{"class":248},[172,966,432],{"class":244},[172,968,249],{"class":248},[172,970,971,973,975,977,979,981,983,985,987,989],{"class":174,"line":181},[172,972,439],{"class":244},[172,974,442],{"class":248},[172,976,331],{"class":254},[172,978,447],{"class":248},[172,980,302],{"class":301},[172,982,452],{"class":244},[172,984,455],{"class":305},[172,986,416],{"class":248},[172,988,426],{"class":460},[172,990,463],{"class":248},[172,992,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019],{"class":174,"line":188},[172,994,468],{"class":244},[172,996,442],{"class":248},[172,998,473],{"class":460},[172,1000,477],{"class":476},[172,1002,481],{"class":480},[172,1004,344],{"class":248},[172,1006,473],{"class":460},[172,1008,379],{"class":248},[172,1010,490],{"class":460},[172,1012,477],{"class":476},[172,1014,481],{"class":480},[172,1016,344],{"class":248},[172,1018,490],{"class":460},[172,1020,501],{"class":248},[172,1022,1023],{"class":174,"line":194},[172,1024,506],{"class":248},[311,1026,1028],{"id":1027},"session-refresh","Session Refresh",[229,1030,1031],{},"Force refresh the session data:",[161,1033,1035],{"className":775,"code":1034,"language":778,"meta":167,"style":167},"\u003Cscript setup lang=\"ts\">\nconst { fetchSession, ready } = useUserSession()\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cbutton :disabled=\"!ready\" @click=\"fetchSession({ force: true })\">\n    Refresh session\n  \u003C/button>\n\u003C/template>\n",[169,1036,1037,1053,1074,1082,1086,1094,1118,1123,1132],{"__ignoreMap":167},[172,1038,1039,1041,1043,1045,1047,1049,1051],{"class":174,"line":175},[172,1040,786],{"class":785},[172,1042,790],{"class":789},[172,1044,794],{"class":793},[172,1046,797],{"class":793},[172,1048,302],{"class":800},[172,1050,803],{"class":652},[172,1052,806],{"class":785},[172,1054,1055,1057,1059,1062,1064,1066,1068,1070,1072],{"class":174,"line":181},[172,1056,245],{"class":244},[172,1058,442],{"class":813},[172,1060,1061],{"class":254},"fetchSession",[172,1063,379],{"class":813},[172,1065,339],{"class":254},[172,1067,447],{"class":813},[172,1069,302],{"class":301},[172,1071,306],{"class":305},[172,1073,309],{"class":813},[172,1075,1076,1078,1080],{"class":174,"line":188},[172,1077,837],{"class":785},[172,1079,790],{"class":789},[172,1081,806],{"class":785},[172,1083,1084],{"class":174,"line":194},[172,1085,185],{"emptyLinePlaceholder":184},[172,1087,1088,1090,1092],{"class":174,"line":200},[172,1089,786],{"class":785},[172,1091,852],{"class":789},[172,1093,806],{"class":785},[172,1095,1096,1098,1101,1104,1106,1108,1111,1113,1116],{"class":174,"line":206},[172,1097,859],{"class":785},[172,1099,1100],{"class":789},"button",[172,1102,1103],{"class":793}," :disabled",[172,1105,302],{"class":800},[172,1107,870],{"class":652},[172,1109,1110],{"class":793}," @click",[172,1112,302],{"class":800},[172,1114,1115],{"class":652},"\"fetchSession({ force: true })\"",[172,1117,806],{"class":785},[172,1119,1120],{"class":174,"line":212},[172,1121,1122],{"class":813},"    Refresh session\n",[172,1124,1125,1128,1130],{"class":174,"line":218},[172,1126,1127],{"class":785},"  \u003C/",[172,1129,1100],{"class":789},[172,1131,806],{"class":785},[172,1133,1134,1136,1138],{"class":174,"line":224},[172,1135,837],{"class":785},[172,1137,852],{"class":789},[172,1139,806],{"class":785},[311,1141,1143],{"id":1142},"session-lifetime","Session Lifetime",[229,1145,1146],{},"Configure session duration in your auth config:",[161,1148,1151],{"className":234,"code":1149,"filename":1150,"language":237,"meta":167,"style":167},"import { defineServerAuth } from '@onmax/nuxt-better-auth/config'\n\nexport default defineServerAuth({\n  session: {\n    expiresIn: 60 * 60 * 24 * 7, // 7 days\n    cookieCache: {\n      enabled: true,\n      maxAge: 5 * 60, // 5 minutes\n    },\n  },\n})\n","server/auth.config.ts",[169,1152,1153,1171,1175,1186,1194,1226,1235,1246,1265,1269,1274],{"__ignoreMap":167},[172,1154,1155,1158,1160,1163,1165,1168],{"class":174,"line":175},[172,1156,1157],{"class":244},"import",[172,1159,442],{"class":248},[172,1161,1162],{"class":460},"defineServerAuth",[172,1164,447],{"class":248},[172,1166,1167],{"class":244},"from",[172,1169,1170],{"class":652}," '@onmax/nuxt-better-auth/config'\n",[172,1172,1173],{"class":174,"line":181},[172,1174,185],{"emptyLinePlaceholder":184},[172,1176,1177,1179,1181,1184],{"class":174,"line":188},[172,1178,406],{"class":244},[172,1180,410],{"class":409},[172,1182,1183],{"class":305}," defineServerAuth",[172,1185,544],{"class":248},[172,1187,1188,1190,1192],{"class":174,"line":194},[172,1189,263],{"class":460},[172,1191,477],{"class":476},[172,1193,249],{"class":248},[172,1195,1196,1199,1201,1204,1208,1210,1212,1215,1217,1220,1222],{"class":174,"line":200},[172,1197,1198],{"class":460},"    expiresIn",[172,1200,477],{"class":476},[172,1202,1203],{"class":572}," 60",[172,1205,1207],{"class":1206},"sn-Jc"," *",[172,1209,1203],{"class":572},[172,1211,1207],{"class":1206},[172,1213,1214],{"class":572}," 24",[172,1216,1207],{"class":1206},[172,1218,1219],{"class":572}," 7",[172,1221,379],{"class":248},[172,1223,1225],{"class":1224},"st7cf","// 7 days\n",[172,1227,1228,1231,1233],{"class":174,"line":206},[172,1229,1230],{"class":460},"    cookieCache",[172,1232,477],{"class":476},[172,1234,249],{"class":248},[172,1236,1237,1240,1242,1244],{"class":174,"line":212},[172,1238,1239],{"class":460},"      enabled",[172,1241,477],{"class":476},[172,1243,573],{"class":572},[172,1245,258],{"class":248},[172,1247,1248,1251,1253,1256,1258,1260,1262],{"class":174,"line":218},[172,1249,1250],{"class":460},"      maxAge",[172,1252,477],{"class":476},[172,1254,1255],{"class":572}," 5",[172,1257,1207],{"class":1206},[172,1259,1203],{"class":572},[172,1261,379],{"class":248},[172,1263,1264],{"class":1224},"// 5 minutes\n",[172,1266,1267],{"class":174,"line":224},[172,1268,580],{"class":248},[172,1270,1272],{"class":174,"line":1271},10,[172,1273,585],{"class":248},[172,1275,1277],{"class":174,"line":1276},11,[172,1278,506],{"class":248},[766,1280],{"to":146,"title":1281},"BetterAuthState component",[1283,1284,1285],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sqe1H, html code.shiki .sqe1H{--shiki-light:#A626A4;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .s17Py, html code.shiki .s17Py{--shiki-light:#383A42;--shiki-default:#BBBBBB;--shiki-dark:#BBBBBB}html pre.shiki code .s6Rhl, html code.shiki .s6Rhl{--shiki-light:#986801;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .sQBpM, html code.shiki .sQBpM{--shiki-light:#0184BC;--shiki-default:#FFFFFFEE;--shiki-dark:#FFFFFFEE}html pre.shiki code .sfT9l, html code.shiki .sfT9l{--shiki-light:#4078F2;--shiki-default:#36F9F6;--shiki-dark:#36F9F6}html pre.shiki code .sKg8T, html code.shiki .sKg8T{--shiki-light:#E45649;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .sgisi, html code.shiki .sgisi{--shiki-light:#383A42;--shiki-light-font-style:inherit;--shiki-default:#FF7EDB;--shiki-default-font-style:italic;--shiki-dark:#FF7EDB;--shiki-dark-font-style:italic}html pre.shiki code .sYvLG, html code.shiki .sYvLG{--shiki-light:#E45649;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .sVnqq, html code.shiki .sVnqq{--shiki-light:#0184BC;--shiki-default:#B6B1B1;--shiki-dark:#B6B1B1}html pre.shiki code .svFNh, html code.shiki .svFNh{--shiki-light:#383A42;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .s3ZNE, html code.shiki .s3ZNE{--shiki-light:#986801;--shiki-default:#F97E72;--shiki-dark:#F97E72}html pre.shiki code .sPAZv, html code.shiki .sPAZv{--shiki-light:#50A14F;--shiki-default:#FF8B39;--shiki-dark:#FF8B39}html pre.shiki code .sL9le, html code.shiki .sL9le{--shiki-light:#383A42;--shiki-default:#36F9F6;--shiki-dark:#36F9F6}html pre.shiki code .stweg, html code.shiki .stweg{--shiki-light:#E45649;--shiki-default:#72F1B8;--shiki-dark:#72F1B8}html pre.shiki code .s0frj, html code.shiki .s0frj{--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-default:#FEDE5D;--shiki-default-font-style:italic;--shiki-dark:#FEDE5D;--shiki-dark-font-style:italic}html pre.shiki code .sNM9w, html code.shiki .sNM9w{--shiki-light:#383A42;--shiki-default:#B6B1B1;--shiki-dark:#B6B1B1}html pre.shiki code .sEEOt, html code.shiki .sEEOt{--shiki-light:#383A42;--shiki-default:#FFFFFFEE;--shiki-dark:#FFFFFFEE}html pre.shiki code .sn-Jc, html code.shiki .sn-Jc{--shiki-light:#0184BC;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .st7cf, html code.shiki .st7cf{--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-default:#848BBD;--shiki-default-font-style:italic;--shiki-dark:#848BBD;--shiki-dark-font-style:italic}",{"title":167,"searchDepth":181,"depth":181,"links":1287},[1288,1291,1292,1293,1294,1295,1296],{"id":313,"depth":181,"text":314,"children":1289},[1290],{"id":510,"depth":188,"text":511},{"id":606,"depth":181,"text":607},{"id":760,"depth":181,"text":761},{"id":771,"depth":181,"text":772},{"id":938,"depth":181,"text":939},{"id":1027,"depth":181,"text":1028},{"id":1142,"depth":181,"text":1143},"Access reactive session state with SSR support using `useUserSession()`.","md",null,{},{"title":52,"description":1297},"vrgsGnudbVLCnPsSbSTQNcO_Cu7bMra8oZT7ZHQXMvA",[1304,1306],{"title":48,"path":49,"stem":50,"description":1305,"children":-1},"When to reach for the full Better Auth server instance.",{"title":56,"path":57,"stem":58,"description":1307,"children":-1},"Learn how to protect your pages and API routes using a layered approach.",1778075463663]