Session
Provides a session tracking and storage mechanism.
It uses the cherrycake_session
table in the Cherrycake skeleton database to store sessions, and caches them on the provided sessionCacheProviderName
.
Session ids are generated by hashing 128 random bytes with a SHA512 algorithm, giving 128 hexits that constitute an effectively unpredictable session id to avoid session hijacking or collision.
Session id collisions are not checked because the probability of getting a collision is so low (1 in 16^128, or 1 in 1.3x10^154, a number way bigger than the estimated number of atoms in the observable universe) that it's preferable to have that security bug instead of having to perform that additional check on each newly created session.
A data storage mechanism is provided to store basic information within each session. The data is stored as a serialized array on the data
field. When requesting an update of this data, the cache is flushed so it will generate an additional database hit on the next request.
The sessions table must be maintained often in order to remove old sessions. Otherwise, a point will be reached where all possible session ids are used and the module will remove the oldest session from the database in order to make room for the new one, effectively generating stress on the database. This will most probably happen a while after the maximum entropy point has been reached and all the stars in the universe have gone extinct.
The JanitorTaskSession
is required to be run in order to do this maintenance work, so be sure to add it to your Janitor.config.php
.
See the Session guide to learn how to work with the Session module.
Configuration
sessionDatabaseProviderName
The name of the database provider to use for storing sessions. Default:main
sessionTableName
The name of the table used to store sessions. Default:cherrycake_session
sessionCacheProviderName
The name of the cache provider to use to store sessions and the counter of created sessions. Default:engine
sessionCacheTtl
The TTL of cached sessions, one of the availableCACHE_TTL_?
. Default:CACHE_TTL_SHORT
.cachePrefix
The cache prefix to use when storing sessions into cache. Default:Session
cookieName
The name of the cookie. Recommended to be changed. Defaut:cherrycake
cookiePath
The path of the cookie. If set to "/", it will be available within the entire domain. Default:/
cookieSecure
If set to true, the cookie will only be sent when the current request is secure (SSL). Default:false
cookieHttpOnly
If set to true, the cookie only will be sent when an HTTP request is made. Default:false
sessionDuration
The duration of the session in seconds. If set to zero, the session will last until the browser is closed. Default:2592000
(one month)isSessionRenew
When set to true, the duration of the session will be renewed to a newsessionDuration
every time a request is made. If set to false, the cookie will expire aftersessionDuration
, no matter how many times the session is requested. Default:true
Last updated