[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"term-s\u002Fsession":3,"related-s\u002Fsession":361},{"id":4,"title":5,"acronym":6,"body":7,"category":343,"description":344,"difficulty":345,"extension":346,"letter":347,"meta":348,"navigation":210,"path":349,"related":350,"seo":355,"sitemap":356,"stem":359,"subcategory":6,"__hash__":360},"terms\u002Fterms\u002Fs\u002Fsession.md","Session",null,{"type":8,"value":9,"toc":337},"minimark",[10,15,19,23,26,30,326,330,333],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"A session is the server's way of remembering who you are across multiple requests. Since HTTP is stateless (each request is independent), sessions give it memory. The server creates a session when you log in, stores your info server-side, and gives you a session ID (usually in a cookie) to identify yourself next time.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"A web session maintains state across multiple HTTP requests from the same client. The server stores session data (user ID, preferences, cart) indexed by a session ID, which is shared with the client via a cookie or URL parameter. Sessions expire after inactivity or logout.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Express session setup\nconst session = require('express-session');\napp.use(session({\n  secret: process.env.SESSION_SECRET,\n  resave: false,\n  saveUninitialized: false,\n  cookie: { secure: true, maxAge: 3600000 }\n}));\n\n\u002F\u002F Using sessions\napp.post('\u002Flogin', (req, res) => {\n  req.session.userId = user.id;\n  res.json({ success: true });\n});\n","javascript","",[38,39,40,49,86,108,134,148,160,194,205,212,218,259,287,317],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Express session setup\n",[41,50,52,56,60,64,68,71,74,78,80,83],{"class":43,"line":51},2,[41,53,55],{"class":54},"spNyl","const",[41,57,59],{"class":58},"sTEyZ"," session ",[41,61,63],{"class":62},"sMK4o","=",[41,65,67],{"class":66},"s2Zo4"," require",[41,69,70],{"class":58},"(",[41,72,73],{"class":62},"'",[41,75,77],{"class":76},"sfazB","express-session",[41,79,73],{"class":62},[41,81,82],{"class":58},")",[41,84,85],{"class":62},";\n",[41,87,89,92,95,98,100,103,105],{"class":43,"line":88},3,[41,90,91],{"class":58},"app",[41,93,94],{"class":62},".",[41,96,97],{"class":66},"use",[41,99,70],{"class":58},[41,101,102],{"class":66},"session",[41,104,70],{"class":58},[41,106,107],{"class":62},"{\n",[41,109,111,115,118,121,123,126,128,131],{"class":43,"line":110},4,[41,112,114],{"class":113},"swJcz","  secret",[41,116,117],{"class":62},":",[41,119,120],{"class":58}," process",[41,122,94],{"class":62},[41,124,125],{"class":58},"env",[41,127,94],{"class":62},[41,129,130],{"class":58},"SESSION_SECRET",[41,132,133],{"class":62},",\n",[41,135,137,140,142,146],{"class":43,"line":136},5,[41,138,139],{"class":113},"  resave",[41,141,117],{"class":62},[41,143,145],{"class":144},"sfNiH"," false",[41,147,133],{"class":62},[41,149,151,154,156,158],{"class":43,"line":150},6,[41,152,153],{"class":113},"  saveUninitialized",[41,155,117],{"class":62},[41,157,145],{"class":144},[41,159,133],{"class":62},[41,161,163,166,168,171,174,176,179,182,185,187,191],{"class":43,"line":162},7,[41,164,165],{"class":113},"  cookie",[41,167,117],{"class":62},[41,169,170],{"class":62}," {",[41,172,173],{"class":113}," secure",[41,175,117],{"class":62},[41,177,178],{"class":144}," true",[41,180,181],{"class":62},",",[41,183,184],{"class":113}," maxAge",[41,186,117],{"class":62},[41,188,190],{"class":189},"sbssI"," 3600000",[41,192,193],{"class":62}," }\n",[41,195,197,200,203],{"class":43,"line":196},8,[41,198,199],{"class":62},"}",[41,201,202],{"class":58},"))",[41,204,85],{"class":62},[41,206,208],{"class":43,"line":207},9,[41,209,211],{"emptyLinePlaceholder":210},true,"\n",[41,213,215],{"class":43,"line":214},10,[41,216,217],{"class":47},"\u002F\u002F Using sessions\n",[41,219,221,223,225,228,230,232,235,237,239,242,246,248,251,253,256],{"class":43,"line":220},11,[41,222,91],{"class":58},[41,224,94],{"class":62},[41,226,227],{"class":66},"post",[41,229,70],{"class":58},[41,231,73],{"class":62},[41,233,234],{"class":76},"\u002Flogin",[41,236,73],{"class":62},[41,238,181],{"class":62},[41,240,241],{"class":62}," (",[41,243,245],{"class":244},"sHdIc","req",[41,247,181],{"class":62},[41,249,250],{"class":244}," res",[41,252,82],{"class":62},[41,254,255],{"class":54}," =>",[41,257,258],{"class":62}," {\n",[41,260,262,265,267,269,271,274,277,280,282,285],{"class":43,"line":261},12,[41,263,264],{"class":58},"  req",[41,266,94],{"class":62},[41,268,102],{"class":58},[41,270,94],{"class":62},[41,272,273],{"class":58},"userId",[41,275,276],{"class":62}," =",[41,278,279],{"class":58}," user",[41,281,94],{"class":62},[41,283,284],{"class":58},"id",[41,286,85],{"class":62},[41,288,290,293,295,298,300,303,306,308,310,313,315],{"class":43,"line":289},13,[41,291,292],{"class":58},"  res",[41,294,94],{"class":62},[41,296,297],{"class":66},"json",[41,299,70],{"class":113},[41,301,302],{"class":62},"{",[41,304,305],{"class":113}," success",[41,307,117],{"class":62},[41,309,178],{"class":144},[41,311,312],{"class":62}," }",[41,314,82],{"class":113},[41,316,85],{"class":62},[41,318,320,322,324],{"class":43,"line":319},14,[41,321,199],{"class":62},[41,323,82],{"class":58},[41,325,85],{"class":62},[11,327,329],{"id":328},"when-youll-hear-this","When You'll Hear This",[16,331,332],{},"\"The session expires after 30 minutes of inactivity.\" \u002F \"Store the cart items in the user's session.\"",[334,335,336],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}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);}",{"title":36,"searchDepth":51,"depth":51,"links":338},[339,340,341,342],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":328,"depth":51,"text":329},"networking","A session is the server's way of remembering who you are across multiple requests.","beginner","md","s",{},"\u002Fterms\u002Fs\u002Fsession",[351,352,353,354],"Cookie","Authentication","HTTP","Sticky Session",{"title":5,"description":344},{"changefreq":357,"priority":358},"weekly",0.7,"terms\u002Fs\u002Fsession","e7bHdqiJlXmPWauMh6puvjNhg3v73EYZQYAKevlPUvM",[362,367,370,374],{"title":352,"path":363,"acronym":364,"category":365,"difficulty":345,"description":366},"\u002Fterms\u002Fa\u002Fauthentication","AuthN","security","Authentication is proving you are who you say you are.",{"title":351,"path":368,"acronym":6,"category":343,"difficulty":345,"description":369},"\u002Fterms\u002Fc\u002Fcookie","A cookie is a tiny piece of data the server tells your browser to store and send back on every future request.",{"title":353,"path":371,"acronym":372,"category":343,"difficulty":345,"description":373},"\u002Fterms\u002Fh\u002Fhttp","HyperText Transfer Protocol","HTTP is the language your browser uses to ask websites for stuff. You type a URL, your browser shouts 'hey, give me that page!",{"title":354,"path":375,"acronym":6,"category":343,"difficulty":376,"description":377},"\u002Fterms\u002Fs\u002Fsticky-session","intermediate","Sticky sessions make sure a user always gets routed to the SAME server, like getting the same cashier every time you visit a store.",1776518312751]