🔗About
The Session Manager is responsible for handling user sessions, including creation, management, and cleanup. It provides a secure way to manage user authentication and maintain session state across requests.
🔗Features
- Create, validate and manage User Sessions
- Login, Register, Logout and Reset password control flows
- Tim Engine templates for rendering session-related views
- Cookie Handling: Manage session cookies for client-side storage of session tokens
- CSRF token generation and validation for enhanced security
🔗Install this service
Install the Session Manager service using Nimble:
nimble install supranim_session🔗Access the Session Manager
The Session Manager is an HttpSession singleton, auto-discovered from src/service/provider/. You access it through the session() helper or, inside controllers and middleware, the withSession template. The starter kits install and wire it up for you.
🔗Session flows
The Session Manager provides a withSession template that you can use to wrap your logic that requires session handling. This template will automatically handle session creation, validation, and cleanup for you.
Here, is an example of how to use the withSession template in a controller action:
import ../service/provider/session
ctrl getAccount:
## GET handler for rendering the account screen
withSession do:
echo userSession.getId()🔗Authentication Middleware
The Session Manager service provides an authentication middleware that you can use to protect routes that require user authentication. You can apply this middleware to your routes as follows:
import ../provider/session
newMiddleware authenticate:
## Checks if the user is authenticated.
## Otherwise, it redirects to the login page
withSession do:
let userData = req.getClientData()
if userSession.isAuthenticated():
# continue to the next middleware
next()
# redirects to `GET /auth/login` page
abort("/auth/login")🔗API Reference
The API reference for this service: https://supranim.github.io/session