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:

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:


Sets dynamic binding for session and env

key &optional (default nil default-given-p)

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 IDs 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.

&key (samesite-policy :lax) (public-session-keys (list (cons "reblocks/page" "session-pages")))

Returns a number of sessions where :user key is NIL.