Session Store
FortJs allows you to configure your session store and store session data in a database, or use any service. A session store is a class that implements the interface - ISessionStore
.
Implement a session store
Let's explore how to implement a simple memory session store
import { ISessionStore } from "fortjs";
// A simple in-memory storage for session data
const sessionValues: Map<string, { [key: string]: any }> = new Map();
export class MemorySessionStore implements ISessionStore {
sessionId: string;
constructor(sessionId: string) {
this.sessionId = sessionId;
}
// Private method to get the session data associated with the current session ID
private getSessionValue_() {
return sessionValues.get(this.sessionId);
}
// Check if any session data exists
async isAnyExist() {
return this.getSessionValue_() != null;
}
// Get the value associated with a specific key in the session
async get(key: string): Promise<any> {
const savedValue = this.getSessionValue_();
return savedValue != null ? savedValue[key] : null;
}
// Get all session data
async getAll(): Promise<{ [key: string]: any }> {
const savedValue = this.getSessionValue_();
return savedValue || {};
}
// Check if a specific key exists in the session
async isExist(key: string): Promise<boolean> {
const savedValue = this.getSessionValue_();
return savedValue == null ? false : savedValue[key] != null;
}
// Clear all session data for the current session ID
async clear(): Promise<void> {
// Remove session values
sessionValues.delete(this.sessionId);
}
// Set a value for a specific key in the session
async set(key: string, val: any) {
const savedValue = this.getSessionValue_();
if (savedValue == null) {
// If no session data exists, create a new entry
sessionValues.set(this.sessionId, {
[key]: val
});
} else {
// Update the value for an existing key
savedValue[key] = val;
}
}
// Set multiple values in the session at once
async setMany(values: { [key: string]: any }) {
return Promise.all(
Object.keys(values).map((key) => {
return this.set(key, values[key]);
})
);
}
// Remove a specific key from the session
async remove(key: string) {
const savedValue = this.getSessionValue_();
if (savedValue != null) {
// Set the value to null to effectively remove it
savedValue[key] = null;
}
}
}
Use Session Store
Once you have created a session store, you need to instruct FortJs to use the new session store.
import { Fort } from "fortjs";
import { UserController } from "./controllers";
import { MemorySessionStore } from "./memory_session_store";
// set your session provider
Fort.sessionStore = MemorySessionStore
//add routes
Fort.routes = [{
controller: UserController,
path: "/user"
}];
Fort.create();
For a complete example, refer to the Session Store Example