HTTP Session
July 8, 2020 ยท View on GitHub
Introduction
Since HTTP driven applications are stateless, sessions provide a way to store information about the user across multiple requests. hunt-framework ships with a variety of session backends that are accessed through an expressive, unified API. Support for popular backends such as Redis, and memory is included out of the box. That's because the session storage depends on the Hunt-Cache.
Configuration
The configuration for session is stored in config/application.conf. Be sure to review the options available to you in this file. If the backend's settings will use the ones for Cache.
# Session
session.prefix = huntsession_
session.expire = 3600
# redis, memory
cache.adapter = redis
cache.prefix = huntcache_
cache.expire = 3600
{tip} More item value reference file ApplicationConfig.d
{tip} More reference file reference
Using The Session
Retrieving Data
There are two primary ways of working with session data in hunt-framework: the global session helper and via a Request instance. First, let's look at accessing the session via a Request instance, which can be type-hinted on a controller method. Remember, controller method dependencies are automatically injected via the hunt-framework :
request.session.get("KEY");
Retrieving All Session Data
If you would like to retrieve all the data in the session, you may use the all method:
string[string] data = request.session.all();
Determining If An Item Exists In The Session
To determine if an item is present in the session, you may use the exists method:
if (request.session.exists("KEY");) {
//
}
Storing Data
To store data in the session, you will typically use the set method :
// Via a request instance...
request.session.set("key", "value");
Pushing To Array Session Values
The push method may be used to push a new value onto a session value that is an array. For example, if the teams key contains an array of team names, you may push a new value onto the array like so:
request.session.push("teams", "developers");
Deleting Data
The remove method will remove a piece of data from the session:
// Forget a single key...
request.session.remove('key');