Using the Session
The functions and macros to manipulate the session are defined in the
REBLOCKS
/SESSION
package.
Session initialization
When a new user opens the site in the browser, Reblocks does these steps:
Creates a new session object. You can consider it a hash table where some data could be stored.
Generates an unique id and put's this session object to the hash map of all sessions.
Calls the
init-session
generic function to determine what widget should be shown to the user.Renders the root widget to
HTML
and sends it to the browser.Along with this
HTML
response, sendsSet-Cookie
header to save session id in the browser.
The method you define for init-session
generic-function should return a root widget.
This widget may include children and render them in it's
reblocks/widget:render
generic-function implementation.
You will find an example of init-session
in the Quickstart
section.
Storing data
You can store any kind of data in a session.
To set a value, use (SETF GET-VALUE)
function.
For example, you might want to store information about the current user if he logged in:
API
Sets dynamic binding for session and env
Get a session value from the currently running webapp.
KEY
is compared using EQUAL
.
Clear the session value for the currently running app.
KEY
is compared using EQUAL
.
Generates an ID
unique accross the session. The generated ID
can be
used to create ID
s for html elements, widgets, etc.
Checks if session is active and data can be safely retrived or stored.
A method for this generic function should be defined to initialize application for a new user session.
On the moment it get called session has-map already exists and you can use get-value
function to set
some values.
Reset current session.
Deletes current session id for the browser.
On the next HTTP
request a new session will be created.
Returns a number of sessions where :user key is NIL
.