Session
Periode interaksi antara user dan aplikasi yang diidentifikasi oleh session ID.
Session adalah mekanisme untuk menyimpan state user selama berinteraksi dengan aplikasi. HTTP bersifat stateless — setiap request tidak tahu apa-apa tentang request sebelumnya. Session mengatasi ini dengan memberi user session ID (biasanya di cookie) yang mereferensi data tersimpan di server (memory, Redis, atau database). Data session bisa berisi: user ID, role, cart contents, form progress. Session berakhir saat user logout atau setelah periode inactive tertentu (session timeout). Stateless alternative: JWT token yang menyimpan semua data di token itu sendiri — tidak perlu storage server.
Contoh Kode
// Session dengan Hono
import { sessionMiddleware } from 'hono-sessions';
app.use(sessionMiddleware({
store: new RedisStore(redis),
encryptionKey: process.env.SESSION_SECRET,
expireAfterSeconds: 3600, // 1 jam
}));
app.post('/login', async (c) => {
const session = c.get('session');
session.set('userId', user.id);
session.set('role', user.role);
});