Masonite comes with a simple way to store sessions. Masonite supports the following session drivers: Cookie and Redis.
Session configuration is located at config/session.py
file. In this file, you can configure which driver
to use.
Masonite is configured to use the Cookie session driver by default, named cookie
.
{% code title="config/session.py" %}
DRIVERS = {
"default": "cookie",
"cookie": {},
"redis": {
"host": "127.0.0.1",
"port": 6379,
"password": "",
"options": {"db": 1}, # redis module driver specific options
"timeout": 60 * 60,
"namespace": "masonite4",
},
}
{% endcode %}
Cookie driver will store all session data in the users cookies. It can be used as is.
Redis driver is requiring the redis
python package, that you can install with:
pip install redis
Then you should define Redis as default driver and configure it with your Redis server parameters:
DRIVERS = {
"default": "redis",
"redis": {
"host": "127.0.0.1",
"port": 6379,
"password": "",
"options": {"db": 1}, # redis module driver specific options
"timeout": 60 * 60,
"namespace": "masonite4",
},
}
Finally ensure that the Redis server is running and you're ready to start using sessions.
To save session data you can simply "set" data into the session:
from masonite.sessions import Session
def store(self, session: Session):
data = session.set('key', 'value')
Flash data is data specific to the next request. This is useful for data such as error messages or alerts:
from masonite.sessions import Session
def store(self, session: Session):
data = session.flash('key', 'value')
To get back the session data you set you can simply using the "get" method:
from masonite.sessions import Session
def store(self, session: Session):
data = session.get('key')
You can check if a session has a specific key:
from masonite.sessions import Session
def store(self, session: Session):
if session.has('key'):
pass
You can also delete a key from the session
from masonite.sessions import Session
def store(self, session: Session):
session.delete('key')
You can reset all data in a session:
session.flush()