snap- Top-level package for the Snap Web Framework

Safe HaskellNone



This module is meant to be used mainly by Session backend developers, who would naturally need access to ISessionManager class internals. You can also use it if you need low-level access to the backend functionality.



data SessionManager Source

Any Haskell record that is a member of the ISessionManager typeclass can be stuffed inside a SessionManager to enable all session-related functionality.

To use sessions in your application, just find a Backend that would produce one for you inside of your Initializer. See initCookieSessionManager in CookieSession for a built-in option that would get you started.


forall a . ISessionManager a => SessionManager a 

class ISessionManager r where Source


load :: r -> Snap r Source

Load a session from given payload.

Will always be called before any other operation. If possible, cache and do nothing when called multiple times within the same request cycle.

commit :: r -> Snap () Source

Commit session, return a possibly updated paylaod

reset :: r -> Snap r Source

Reset session

touch :: r -> r Source

Touch session

insert :: Text -> Text -> r -> r Source

Insert a key-value pair into session

lookup :: Text -> r -> Maybe Text Source

Lookup a key in session

delete :: Text -> r -> r Source

Delete a key in session

csrf :: r -> Text Source

Return a session-specific CSRF protection token. See mkCSRFToken for help in creating the value.

toList :: r -> [(Text, Text)] Source

Return all key-value pairs as an association list