Storage Session Management in JavaScript
Manage user sessions with storage
IntermediateLocalStorage/SessionStorageExample 8 of 10
storage-session-management.js
1// Method 1: Basic session management2class SessionManager {3 constructor() {4 this.sessionKey = 'userSession';5 }67 createSession(userId, userData) {8 const session = {9 userId: userId,10 userData: userData,11 createdAt: Date.now(),12 lastActivity: Date.now(),13 token: this.generateToken()14 };15 sessionStorage.setItem(this.sessionKey, JSON.stringify(session));16 return session;17 }1819 getSession() {20 const sessionStr = sessionStorage.getItem(this.sessionKey);21 return sessionStr ? JSON.parse(sessionStr) : null;22 }2324 updateActivity() {25 const session = this.getSession();26 if (session) {27 session.lastActivity = Date.now();28 sessionStorage.setItem(this.sessionKey, JSON.stringify(session));29 }30 }3132 destroySession() {33 sessionStorage.removeItem(this.sessionKey);34 }3536 isSessionValid(maxIdleTime = 3600000) {37 const session = this.getSession();38 if (!session) return false;3940 const idleTime = Date.now() - session.lastActivity;41 return idleTime < maxIdleTime;42 }4344 generateToken() {45 return Math.random().toString(36).substring(2) + Date.now().toString(36);46 }47}4849const sessionManager = new SessionManager();50sessionManager.createSession(123, { name: 'John', role: 'user' });51console.log('Session:', sessionManager.getSession());5253// Method 2: Auto-refresh session54function setupSessionRefresh() {55 setInterval(() => {56 const session = sessionManager.getSession();57 if (session) {58 sessionManager.updateActivity();59 }60 }, 60000); // Update every minute61}6263// Method 3: Session timeout warning64function setupSessionTimeout(maxIdleTime, warningTime) {65 setInterval(() => {66 const session = sessionManager.getSession();67 if (session) {68 const idleTime = Date.now() - session.lastActivity;69 const remaining = maxIdleTime - idleTime;7071 if (remaining < warningTime && remaining > 0) {72 console.warn('Session expiring soon:', Math.floor(remaining / 1000), 'seconds');73 } else if (remaining <= 0) {74 console.log('Session expired');75 sessionManager.destroySession();76 }77 }78 }, 1000);79}8081// Method 4: Multi-tab session sync82window.addEventListener('storage', function(e) {83 if (e.key === 'userSession') {84 const session = JSON.parse(e.newValue);85 console.log('Session updated from another tab:', session);86 // Update UI or redirect87 }88});8990// Method 5: Persistent session (localStorage)91class PersistentSession {92 createSession(userId, userData, rememberMe = false) {93 const session = {94 userId: userId,95 userData: userData,96 createdAt: Date.now(),97 lastActivity: Date.now(),98 rememberMe: rememberMe99 };100101 if (rememberMe) {102 localStorage.setItem('userSession', JSON.stringify(session));103 } else {104 sessionStorage.setItem('userSession', JSON.stringify(session));105 }106 }107108 getSession() {109 const session = sessionStorage.getItem('userSession') ||110 localStorage.getItem('userSession');111 return session ? JSON.parse(session) : null;112 }113114 destroySession() {115 sessionStorage.removeItem('userSession');116 localStorage.removeItem('userSession');117 }118}119120const persistentSession = new PersistentSession();121persistentSession.createSession(123, { name: 'John' }, true);
Output
Session: { userId: 123, userData: { name: 'John', role: 'user' }, createdAt: 1234567890, lastActivity: 1234567890, token: 'abc123xyz' }What's going on
Session management tracks user state.
Session Storage
sessionStorage: Tab-specific
localStorage: Persistent
Choose based on needs
Session Lifecycle
Create: On login
Update: On activity
Validate: Check expiry
Destroy: On logout
Features
Auto-refresh
Timeout warnings
Multi-tab sync
Remember me
Use Cases
User authentication
Activity tracking
Security
User preferences
Best Practices
Update on activity
Check validity
Handle expiry
Clear on logout