[{"data":1,"prerenderedAt":930},["ShallowReactive",2],{"navigation":3,"\u002Fmodules\u002Fsign-in-completer":250,"\u002Fmodules\u002Fsign-in-completer-surround":925},[4,43,120,143,219],{"title":5,"path":6,"stem":7,"children":8,"icon":42},"Get started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22,27,32,37],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Install AuthEndpoints","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-play",{"title":23,"path":24,"stem":25,"icon":26},"Pick your setup","\u002Fgetting-started\u002Fchoose-a-sign-in-stack","1.getting-started\u002F4.choose-a-sign-in-stack","i-lucide-signpost",{"title":28,"path":29,"stem":30,"icon":31},"Use the AuthEndpoints skill with coding agents","\u002Fgetting-started\u002Fai-agents","1.getting-started\u002F5.ai-agents","i-lucide-bot",{"title":33,"path":34,"stem":35,"icon":36},"Password auth","\u002Fgetting-started\u002Fpassword-auth","1.getting-started\u002F6.password-auth","i-lucide-key-round",{"title":38,"path":39,"stem":40,"icon":41},"3.x facade","\u002Fgetting-started\u002Fcompatibility-facade","1.getting-started\u002F7.compatibility-facade","i-lucide-archive","i-lucide-rocket",{"title":44,"path":45,"stem":46,"children":47,"icon":119},"Guides","\u002Fguides","2.guides\u002F01.index",[48,50,55,60,65,70,74,79,84,89,94,99,104,109,114],{"title":44,"path":45,"stem":46,"icon":49},"i-lucide-list-checks",{"title":51,"path":52,"stem":53,"icon":54},"Register users","\u002Fguides\u002Fregistration","2.guides\u002F02.registration","i-lucide-user-plus",{"title":56,"path":57,"stem":58,"icon":59},"Sign users in","\u002Fguides\u002Fsign-in","2.guides\u002F03.sign-in","i-lucide-log-in",{"title":61,"path":62,"stem":63,"icon":64},"Sign users out","\u002Fguides\u002Fsign-out","2.guides\u002F04.sign-out","i-lucide-log-out",{"title":66,"path":67,"stem":68,"icon":69},"Turn on two-factor authentication","\u002Fguides\u002Ftwo-factor","2.guides\u002F05.two-factor","i-lucide-smartphone",{"title":71,"path":72,"stem":73,"icon":36},"Reset a forgotten password","\u002Fguides\u002Freset-password","2.guides\u002F06.reset-password",{"title":75,"path":76,"stem":77,"icon":78},"Change a user's email or password","\u002Fguides\u002Fmanage-account","2.guides\u002F07.manage-account","i-lucide-user-cog",{"title":80,"path":81,"stem":82,"icon":83},"Add, rename, and remove passkeys","\u002Fguides\u002Fmanage-passkeys","2.guides\u002F08.manage-passkeys","i-lucide-scan-face",{"title":85,"path":86,"stem":87,"icon":88},"Link and unlink GitHub or Google accounts","\u002Fguides\u002Flink-external-accounts","2.guides\u002F09.link-external-accounts","i-lucide-link",{"title":90,"path":91,"stem":92,"icon":93},"Require step-up before sensitive actions","\u002Fguides\u002Fstep-up","2.guides\u002F10.step-up","i-lucide-shield-check",{"title":95,"path":96,"stem":97,"icon":98},"Call the API from a browser","\u002Fguides\u002Fbrowser-clients","2.guides\u002F11.browser-clients","i-lucide-globe",{"title":100,"path":101,"stem":102,"icon":103},"Prepare for production","\u002Fguides\u002Fproduction","2.guides\u002F12.production","i-lucide-factory",{"title":105,"path":106,"stem":107,"icon":108},"Sign in with an emailed code","\u002Fguides\u002Femail-code","2.guides\u002F13.email-code","i-lucide-mail",{"title":110,"path":111,"stem":112,"icon":113},"Upgrade to 4.0","\u002Fguides\u002Fupgrading-to-4","2.guides\u002F14.upgrading-to-4","i-lucide-arrow-up-right",{"title":115,"path":116,"stem":117,"icon":118},"Run an app with no public sign-up","\u002Fguides\u002Finternal-app","2.guides\u002F15.internal-app","i-lucide-building-2","i-lucide-waypoints",{"title":121,"path":122,"stem":123,"children":124,"icon":142},"Composable endpoints","\u002Fcomposables","3.composables\u002F1.index",[125,128,132,137],{"title":126,"path":122,"stem":123,"icon":127},"How composition works","i-lucide-layout-grid",{"title":129,"path":130,"stem":131,"icon":49},"Composition requirements","\u002Fcomposables\u002Frequirements","3.composables\u002F2.requirements",{"title":133,"path":134,"stem":135,"icon":136},"Compose a custom auth stack","\u002Fcomposables\u002Frecipes","3.composables\u002F3.recipes","i-lucide-book-marked",{"title":138,"path":139,"stem":140,"icon":141},"Composition","\u002Fcomposables\u002Fcomposition","3.composables\u002F4.composition","i-lucide-table","i-lucide-blocks",{"title":144,"icon":145,"path":146,"stem":147,"children":148,"page":218},"Reference","i-lucide-book-open","\u002Fmodules","4.modules",[149,154,158,163,168,173,177,182,186,191,195,200,205,209,213],{"title":150,"path":151,"stem":152,"icon":153},"Endpoint reference","\u002Fmodules\u002Fendpoints","4.modules\u002F01.endpoints","i-lucide-route",{"title":155,"path":156,"stem":157,"icon":78},"Identity management module","\u002Fmodules\u002Fidentity-management","4.modules\u002F02.identity-management",{"title":159,"path":160,"stem":161,"icon":162},"Cookie sign-in module","\u002Fmodules\u002Fcookie-auth","4.modules\u002F03.cookie-auth","i-lucide-cookie",{"title":164,"path":165,"stem":166,"icon":167},"Identity bearer sign-in module","\u002Fmodules\u002Fbearer-auth","4.modules\u002F04.bearer-auth","i-lucide-key",{"title":169,"path":170,"stem":171,"icon":172},"JWT module","\u002Fmodules\u002Fjwt","4.modules\u002F05.jwt","i-lucide-fingerprint",{"title":174,"path":175,"stem":176,"icon":83},"Passkeys module","\u002Fmodules\u002Fpasskeys","4.modules\u002F06.passkeys",{"title":178,"path":179,"stem":180,"icon":181},"ReAuth module","\u002Fmodules\u002Freauth","4.modules\u002F07.reauth","i-lucide-shield-alert",{"title":183,"path":184,"stem":185,"icon":59},"External OAuth packages","\u002Fmodules\u002Fexternal-oauth","4.modules\u002F08.external-oauth",{"title":187,"path":188,"stem":189,"icon":190},"Configuration options","\u002Fmodules\u002Fconfiguration","4.modules\u002F09.configuration","i-lucide-settings",{"title":192,"path":193,"stem":194,"icon":93},"Antiforgery (CSRF) rules","\u002Fmodules\u002Fcsrf","4.modules\u002F10.csrf",{"title":196,"path":197,"stem":198,"icon":199},"Responses and errors","\u002Fmodules\u002Ferrors","4.modules\u002F11.errors","i-lucide-circle-alert",{"title":201,"path":202,"stem":203,"icon":204},"Rate-limit policies","\u002Fmodules\u002Frate-limits","4.modules\u002F12.rate-limits","i-lucide-gauge",{"title":206,"path":207,"stem":208,"icon":108},"Email-code module","\u002Fmodules\u002Femail-code","4.modules\u002F13.email-code",{"title":210,"path":211,"stem":212,"icon":59},"Sign-in completer","\u002Fmodules\u002Fsign-in-completer","4.modules\u002F14.sign-in-completer",{"title":214,"path":215,"stem":216,"icon":217},"Enumeration-safe responses","\u002Fmodules\u002Fenumeration","4.modules\u002F15.enumeration","i-lucide-eye-off",false,{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":218},"Concepts","i-lucide-lightbulb","\u002Fconcepts","5.concepts",[225,230,235,240,245],{"title":226,"path":227,"stem":228,"icon":229},"AuthEndpoints compared with other options","\u002Fconcepts\u002Fcompare","5.concepts\u002F1.compare","i-lucide-git-compare",{"title":231,"path":232,"stem":233,"icon":234},"Stock Identity endpoints vs AuthEndpoints","\u002Fconcepts\u002Fstock-identity-vs-authendpoints","5.concepts\u002F2.stock-identity-vs-authendpoints","i-lucide-columns-2",{"title":236,"path":237,"stem":238,"icon":239},"MapIdentityApi alternative","\u002Fconcepts\u002Fmapidentityapi-alternative","5.concepts\u002F3.mapidentityapi-alternative","i-lucide-arrow-left-right",{"title":241,"path":242,"stem":243,"icon":244},"Security model","\u002Fconcepts\u002Fsecurity-model","5.concepts\u002F4.security-model","i-lucide-shield",{"title":246,"path":247,"stem":248,"icon":249},"FAQ","\u002Fconcepts\u002Ffaq","5.concepts\u002F5.faq","i-lucide-circle-help",{"id":251,"title":210,"body":252,"description":918,"extension":919,"faq":218,"links":920,"meta":921,"navigation":922,"path":211,"seo":923,"stem":212,"__hash__":924},"docs\u002F4.modules\u002F14.sign-in-completer.md",{"type":253,"value":254,"toc":913},"minimark",[255,259,266,393,511,528,580,617,622,711,731,751,795,807,811,838,848,868,886,890,909],[256,257,258],"p",{},"A sign-in method checks the proof. The completer writes the session after that check succeeds. Failures never call it.",[256,260,261,265],{},[262,263,264],"code",{},"AuthEndpointsSession"," selects a built-in completer:",[267,268,269,288],"table",{},[270,271,272],"thead",{},[273,274,275,279,282,285],"tr",{},[276,277,278],"th",{},"Session",[276,280,281],{},"Name",[276,283,284],{},"Registered by",[276,286,287],{},"Result",[289,290,291,324,353],"tbody",{},[273,292,293,299,304,317],{},[294,295,296],"td",{},[262,297,298],{},"Cookie",[294,300,301],{},[262,302,303],{},"SignInCompleters.Cookie",[294,305,306,309,310,313,314],{},[262,307,308],{},"AddAuthEndpointsIdentity",", ",[262,311,312],{},"AddPasswordEndpoints",", or ",[262,315,316],{},"AddEmailCodeEndpoints",[294,318,319,320,323],{},"Application cookie. Passkey register returns ",[262,321,322],{},"{ credentialId }",".",[273,325,326,331,336,339],{},[294,327,328],{},[262,329,330],{},"IdentityBearer",[294,332,333],{},[262,334,335],{},"SignInCompleters.IdentityBearer",[294,337,338],{},"same",[294,340,341,342,345,346,349,350,323],{},"Identity bearer body, or an application cookie when ",[262,343,344],{},"useCookies"," or ",[262,347,348],{},"useSessionCookies"," is set. Passkey register returns the token body and does not add ",[262,351,352],{},"credentialId",[273,354,355,360,365,370],{},[294,356,357],{},[262,358,359],{},"Jwt",[294,361,362],{},[262,363,364],{},"SignInCompleters.Jwt",[294,366,367],{},[262,368,369],{},"AddJwtEndpoints",[294,371,372,375,376,379,380,313,383,386,387,390,391,323],{},[262,373,374],{},"accessToken"," and ",[262,377,378],{},"tokenType",". Refresh cookie ",[262,381,382],{},"AuthEndpoints.Jwt.RefreshToken",[262,384,385],{},"refreshToken"," in the body when transport is ",[262,388,389],{},"Body",". Passkey register does not add ",[262,392,352],{},[394,395,400],"pre",{"className":396,"code":397,"language":398,"meta":399,"style":399},"language-cs shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","identity.MapPasswordEndpoints\u003CAppUser>(AuthEndpointsSession.Jwt);\nidentity.MapEmailCodeEndpoints\u003CAppUser>(AuthEndpointsSession.IdentityBearer);\naccount.MapPasskeySignInEndpoints\u003CAppUser>(AuthEndpointsSession.Jwt);\nexternal.MapExternalAuthEndpoints\u003CAppUser>(AuthEndpointsSession.Cookie);\n","cs","",[262,401,402,437,461,486],{"__ignoreMap":399},[403,404,407,411,414,418,421,425,428,430,432,434],"span",{"class":405,"line":406},"line",1,[403,408,410],{"class":409},"sTEyZ","identity",[403,412,323],{"class":413},"sMK4o",[403,415,417],{"class":416},"s2Zo4","MapPasswordEndpoints",[403,419,420],{"class":413},"\u003C",[403,422,424],{"class":423},"sBMFI","AppUser",[403,426,427],{"class":413},">(",[403,429,264],{"class":409},[403,431,323],{"class":413},[403,433,359],{"class":409},[403,435,436],{"class":413},");\n",[403,438,440,442,444,447,449,451,453,455,457,459],{"class":405,"line":439},2,[403,441,410],{"class":409},[403,443,323],{"class":413},[403,445,446],{"class":416},"MapEmailCodeEndpoints",[403,448,420],{"class":413},[403,450,424],{"class":423},[403,452,427],{"class":413},[403,454,264],{"class":409},[403,456,323],{"class":413},[403,458,330],{"class":409},[403,460,436],{"class":413},[403,462,464,467,469,472,474,476,478,480,482,484],{"class":405,"line":463},3,[403,465,466],{"class":409},"account",[403,468,323],{"class":413},[403,470,471],{"class":416},"MapPasskeySignInEndpoints",[403,473,420],{"class":413},[403,475,424],{"class":423},[403,477,427],{"class":413},[403,479,264],{"class":409},[403,481,323],{"class":413},[403,483,359],{"class":409},[403,485,436],{"class":413},[403,487,489,492,494,497,499,501,503,505,507,509],{"class":405,"line":488},4,[403,490,491],{"class":409},"external",[403,493,323],{"class":413},[403,495,496],{"class":416},"MapExternalAuthEndpoints",[403,498,420],{"class":413},[403,500,424],{"class":423},[403,502,427],{"class":413},[403,504,264],{"class":409},[403,506,323],{"class":413},[403,508,298],{"class":409},[403,510,436],{"class":413},[256,512,513,516,517,520,521,524,525,323],{},[262,514,515],{},"MapPasskeySignInEndpoints\u003CTUser>(string?)"," is still the confirm-email endpoint name. ",[262,518,519],{},"MapPasskeySignInEndpoints\u003CAppUser>(\"MySession\")"," does not select a completer. When that string matches a registered completer name, map time logs a warning on the ",[262,522,523],{},"AuthEndpoints"," category and still uses the default completer. Pass the session enum, or pass the completer name and the confirm-email name: ",[262,526,527],{},"MapPasskeySignInEndpoints\u003CAppUser>(SignInCompleters.Jwt, confirmEmailEndpointName: null)",[256,529,530,375,533,536,537,540,541,544,545,547,548,551,552,309,555,309,558,309,561,564,565,568,569,572,573,576,577,323],{},[262,531,532],{},"PasskeySignInKind",[262,534,535],{},"PasswordLoginMode"," stay. With no ",[262,538,539],{},"session"," and no ",[262,542,543],{},"completer"," argument, email-code verify and passkey register and login keep the Identity bearer completer. Parameterless password login uses the cookie completer. An explicit ",[262,546,535],{}," stays on ",[262,549,550],{},"PasswordSignInAsync",". ",[262,553,554],{},"MapCookieAuthEndpoints",[262,556,557],{},"MapBearerAuthEndpoints",[262,559,560],{},"MapIdentityManagementApi",[262,562,563],{},"MapPasskeyEndpoints",", and ",[262,566,567],{},"MapAuthEndpoints"," keep that 3.x choice. ",[262,570,571],{},"AddAuthEndpoints"," ignores ",[262,574,575],{},"SignInCompletionOptions.Default",", including email-code verify and JWT ",[262,578,579],{},"POST \u002Fcreate",[256,581,582,584,585,309,588,309,591,313,593,595,596,599,600,602,603,605,606,608,609,309,611,313,613,616],{},[262,583,575],{}," applies when ",[262,586,587],{},"MapPasswordEndpoints()",[262,589,590],{},"MapPasswordSignInEndpoints()",[262,592,446],{},[262,594,471],{}," is called with no session and no completer name. When ",[262,597,598],{},"Default"," is unset, those password maps use the ",[262,601,298],{}," completer. An explicit ",[262,604,535],{}," beats ",[262,607,598],{}," and keeps that 3.x handler (",[262,610,298],{},[262,612,330],{},[262,614,615],{},"None",").",[618,619,621],"h2",{"id":620},"custom-completer","Custom completer",[394,623,625],{"className":396,"code":624,"language":398,"meta":399,"style":399},"builder.Services.AddSignInCompleter\u003CAppUser, MySignInCompleter>(\"MySession\");\nbuilder.Services.Configure\u003CSignInCompletionOptions>(options => options.Default = \"MySession\");\n",[262,626,627,665],{"__ignoreMap":399},[403,628,629,632,634,637,639,642,644,646,649,652,654,657,661,663],{"class":405,"line":406},[403,630,631],{"class":409},"builder",[403,633,323],{"class":413},[403,635,636],{"class":409},"Services",[403,638,323],{"class":413},[403,640,641],{"class":416},"AddSignInCompleter",[403,643,420],{"class":413},[403,645,424],{"class":423},[403,647,648],{"class":413},",",[403,650,651],{"class":423}," MySignInCompleter",[403,653,427],{"class":413},[403,655,656],{"class":413},"\"",[403,658,660],{"class":659},"sfazB","MySession",[403,662,656],{"class":413},[403,664,436],{"class":413},[403,666,667,669,671,673,675,678,680,683,685,688,691,694,696,699,702,705,707,709],{"class":405,"line":439},[403,668,631],{"class":409},[403,670,323],{"class":413},[403,672,636],{"class":409},[403,674,323],{"class":413},[403,676,677],{"class":416},"Configure",[403,679,420],{"class":413},[403,681,682],{"class":423},"SignInCompletionOptions",[403,684,427],{"class":413},[403,686,687],{"class":423},"options",[403,689,690],{"class":413}," =>",[403,692,693],{"class":409}," options",[403,695,323],{"class":413},[403,697,698],{"class":409},"Default ",[403,700,701],{"class":413},"=",[403,703,704],{"class":413}," \"",[403,706,660],{"class":659},[403,708,656],{"class":413},[403,710,436],{"class":413},[256,712,713,714,717,718,720,721,723,724,309,726,564,728,730],{},"Or pass ",[262,715,716],{},"\"MySession\""," to the sign-in map. A name passed to the map wins over an explicitly registered 3.x completer. The 3.x registration wins over ",[262,719,575],{}," when the map passes no name. Calling ",[262,722,641],{}," again for the same user and name replaces that registration. The name is checked for the user type being mapped. A completer registered for another user fails at map time. The built-in ",[262,725,298],{},[262,727,330],{},[262,729,359],{}," names apply to every user type.",[256,732,733,736,737,740,741,744,745,748,749,323],{},[262,734,735],{},"SignInCompletionContext.UsedTwoFactor"," is true when password sign-in presented a valid authenticator or recovery code in this request. Cookie and Identity bearer completers add an ",[262,738,739],{},"amr"," claim of ",[262,742,743],{},"mfa"," when it is set, and ",[262,746,747],{},"pwd"," otherwise. A remembered two-factor client stays ",[262,750,747],{},[256,752,753,754,757,758,375,761,764,765,767,768,770,771,774,775,345,777,779,780,551,783,786,787,790,791,794],{},"External callbacks use ",[262,755,756],{},"SignInMethod.External",". There is no two-factor step. ",[262,759,760],{},"MapExternalAuthEndpoints\u003CTUser>()",[262,762,763],{},"MapExternalAuthProvider"," with no session use the ",[262,766,298],{}," completer unless ",[262,769,575],{}," names one. An explicit ",[262,772,773],{},"AddCompleter\u003CT>()"," still wins over that default. A ",[262,776,539],{},[262,778,543],{}," argument wins over ",[262,781,782],{},"AddCompleter",[262,784,785],{},"AuthEndpointsSession.Jwt"," writes the refresh cookie and redirects. The access token is not in the URL. That session with ",[262,788,789],{},"RefreshTokenTransport.Body"," throws at map time and does not create a refresh token. ",[262,792,793],{},"AddCompleter\u003CJwtExternalLoginCompleter\u003CTUser>>()"," with body transport fails startup validation.",[256,796,797,798,540,800,802,803,323],{},"The 3.x completer interfaces are obsolete and removed in 5.0. An explicitly registered one still runs when the map passes no ",[262,799,539],{},[262,801,543],{},". See ",[804,805,110],"a",{"href":806},"\u002Fguides\u002Fupgrading-to-4\u002F",[618,808,810],{"id":809},"password-login","Password login",[256,812,813,375,816,819,820,823,824,309,826,313,829,832,833,835,836,323],{},[262,814,815],{},"MapPasswordEndpoints\u003CTUser>()",[262,817,818],{},"MapPasswordSignInEndpoints\u003CTUser>()"," call ",[262,821,822],{},"CheckPasswordSignInAsync",", then the user manager's authenticator and recovery-code checks, then the completer. They do not call ",[262,825,550],{},[262,827,828],{},"TwoFactorAuthenticatorSignInAsync",[262,830,831],{},"TwoFactorRecoveryCodeSignInAsync",". With no ",[262,834,575],{},", the completer is ",[262,837,298],{},[256,839,840,841,843,844,847],{},"Success, a wrong password, a missing authenticator code, a wrong authenticator code, and remember-client match 3.4.1 cookie login. A wrong recovery code counts toward lockout. ",[262,842,831],{}," does not. An unknown user name runs a password-hash verify with the host's ",[262,845,846],{},"IPasswordHasher\u003CTUser>",", so that request takes about as long as a wrong password.",[256,849,850,851,854,855,309,857,313,859,861,862,345,864,867],{},"A custom ",[262,852,853],{},"SignInManager\u003CTUser>"," that overrides ",[262,856,550],{},[262,858,828],{},[262,860,831],{}," is not called by these maps. Override ",[262,863,822],{},[262,865,866],{},"CanSignInAsync",", or put sign-in side effects in a completer.",[256,869,870,871,873,874,551,876,309,878,564,880,882,883,885],{},"An explicit ",[262,872,535],{}," uses the 3.4.1 handlers and beats ",[262,875,575],{},[262,877,554],{},[262,879,557],{},[262,881,567],{}," do too. ",[262,884,567],{}," login does not run the unknown-email hash verify, so an unknown email can return faster than a wrong password.",[618,887,889],{"id":888},"related","Related",[891,892,893,900,905],"ul",{},[894,895,896],"li",{},[804,897,899],{"href":898},"\u002Fcomposables\u002Fcomposition\u002F","Composition table",[894,901,902],{},[804,903,169],{"href":904},"\u002Fmodules\u002Fjwt\u002F",[894,906,907],{},[804,908,110],{"href":806},[910,911,912],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":399,"searchDepth":406,"depth":439,"links":914},[915,916,917],{"id":620,"depth":439,"text":621},{"id":809,"depth":439,"text":810},{"id":888,"depth":439,"text":889},"The session a successful sign-in finishes in, and how to replace that step.","md",null,{},{"title":210,"icon":59},{"title":210,"description":918},"mCIJ1mC6__Sc1fGwJtVg6qG-Pty9cf0xscUljSt_Hg8",[926,928],{"title":206,"path":207,"stem":208,"description":927,"icon":108,"children":-1},"Reference for emailed one-time codes, optional sign-up, and optional magic links.",{"title":214,"path":215,"stem":216,"description":929,"icon":217,"children":-1},"Register, forgot-password, resend, email-code send, and passkey registration options return the same response for known and unknown emails.",1792054259353]