cutelyst 3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
Cutelyst::Session Class Reference

#include <session.h>

Inheritance diagram for Cutelyst::Session:

Public Member Functions

 Session (Application *parent)
void setStorage (SessionStore *store)
virtual bool setup (Application *app) final
SessionStorestorage () const
Public Member Functions inherited from Cutelyst::Plugin
 Plugin (Application *parent)
Public Member Functions inherited from QObject
 QObject (QObject *parent)
bool blockSignals (bool block)
const QObjectListchildren () const const
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
void deleteLater ()
void destroyed (QObject *obj)
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
bool disconnect (const QObject *receiver, const char *method) const const
void dumpObjectInfo ()
void dumpObjectInfo () const const
void dumpObjectTree ()
void dumpObjectTree () const const
QList< QByteArraydynamicPropertyNames () const const
virtual bool event (QEvent *e)
virtual bool eventFilter (QObject *watched, QEvent *event)
findChild (const QString &name, Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
bool inherits (const char *className) const const
void installEventFilter (QObject *filterObj)
bool isWidgetType () const const
bool isWindowType () const const
void killTimer (int id)
virtual const QMetaObjectmetaObject () const const
void moveToThread (QThread *targetThread)
QString objectName () const const
void objectNameChanged (const QString &objectName, QPrivateSignal)
QObjectparent () const const
QVariant property (const char *name) const const
 Q_CLASSINFO (Name, Value)
 Q_DISABLE_COPY (Class)
 Q_DISABLE_COPY_MOVE (Class)
 Q_DISABLE_MOVE (Class)
 Q_EMIT Q_EMIT
 Q_ENUM (...)
 Q_ENUM_NS (...)
 Q_ENUMS (...)
 Q_FLAG (...)
 Q_FLAG_NS (...)
 Q_FLAGS (...)
 Q_GADGET Q_GADGET
 Q_INTERFACES (...)
 Q_INVOKABLE Q_INVOKABLE
 Q_NAMESPACE Q_NAMESPACE
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 Q_OBJECT Q_OBJECT
 Q_PROPERTY (...)
 Q_REVISION Q_REVISION
 Q_SET_OBJECT_NAME (Object)
 Q_SIGNAL Q_SIGNAL
 Q_SIGNALS Q_SIGNALS
 Q_SLOT Q_SLOT
 Q_SLOTS Q_SLOTS
qFindChild (const QObject *obj, const QString &name)
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
QList< T > qFindChildren (const QObject *obj, const QString &name)
qobject_cast (const QObject *object)
qobject_cast (QObject *object)
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
void removeEventFilter (QObject *obj)
void setObjectName (const QString &name)
void setParent (QObject *parent)
bool setProperty (const char *name, const QVariant &value)
bool signalsBlocked () const const
int startTimer (int interval, Qt::TimerType timerType)
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
QThreadthread () const const

Static Public Member Functions

static void changeExpires (Context *c, quint64 expires)
static QString deleteReason (Context *c)
static void deleteSession (Context *c, const QString &reason=QString())
static void deleteValue (Context *c, const QString &key)
static void deleteValues (Context *c, const QStringList &keys)
static quint64 expires (Context *c)
static QString id (Context *c)
static bool isValid (Context *c)
static void setValue (Context *c, const QString &key, const QVariant &value)
static QVariant value (Context *c, const QString &key, const QVariant &defaultValue=QVariant())
Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool disconnect (const QMetaObject::Connection &connection)
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
QString tr (const char *sourceText, const char *disambiguation, int n)
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)

Additional Inherited Members

Public Attributes inherited from QObject
typedef QObjectList
Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
virtual void connectNotify (const QMetaMethod &signal)
virtual void customEvent (QEvent *event)
virtual void disconnectNotify (const QMetaMethod &signal)
bool isSignalConnected (const QMetaMethod &signal) const const
int receivers (const char *signal) const const
QObjectsender () const const
int senderSignalIndex () const const
virtual void timerEvent (QTimerEvent *event)
Properties inherited from QObject
 objectName

Detailed Description

Plugin providing methods for session management.

Configuration file options

There are some options you can set in your application configuration file in the Cutelyst_Session_Plugin section.

expires

Integer value, default: 7200

Expiration duration of the session in seconds.

verify_address

Boolean value, default: false

If enabled, the plugin will check if the IP address of the requesting user matches the address stored in the session data. In case of a mismatch, the session will be deleted.

verify_user_agent

Boolean value, default: false

If true, the plugin will check if the user agent of the requesting user matches the user agent stored in the session data. In case of a mismatch, the session will be deleted.

cookie_http_only

Boolean value, default: true

If true, the session cookie will have the httpOnly flag set so that the cookie is not accessible to JavaScript's Document.cookie API.

cookie_secure

Boolean value, default: false

If true, the session cookie will have the secure flag set so that the cookie is only sent to the server with an encrypted request over the HTTPS protocol.

cookie_same_site

String value, default: strict; acceptable values: default, none, lax, strict

Defines the SameSite attribute of the session cookie. See MDN to learn more about SameSite cookies. This configuration key is available since Cutelyst 3.8.0 and is only available if Cutelyst is compiled against Qt 6.1.0 or newer.

Definition at line 111 of file session.h.

Constructor & Destructor Documentation

◆ Session()

Session::Session ( Cutelyst::Application * parent)

Constructs a new session object with the given parent.

Definition at line 34 of file session.cpp.

References Cutelyst::Plugin::Plugin(), and QObject::parent().

Referenced by setStorage(), setup(), and storage().

◆ ~Session()

Cutelyst::Session::~Session ( )
virtual

Definition at line 40 of file session.cpp.

Member Function Documentation

◆ changeExpires()

void Session::changeExpires ( Context * c,
quint64 expires )
static

change the session expiration time for this session

Note that this only works to set the session longer than the config setting.

Definition at line 143 of file session.cpp.

References QDateTime::currentMSecsSinceEpoch(), expires(), and id().

◆ deleteReason()

QString Session::deleteReason ( Context * c)
static

This method contains a string with the reason a session was deleted. Possible values include:

  • session expired
  • address mismatch
  • user agent mismatch

Definition at line 165 of file session.cpp.

References Cutelyst::Context::stash().

◆ deleteSession()

void Session::deleteSession ( Context * c,
const QString & reason = QString() )
static

This method is used to invalidate a session. It takes an optional parameter which will be saved in deleteReason if provided.

NOTE: This method will also delete your flash data.

Definition at line 156 of file session.cpp.

◆ deleteValue()

void Session::deleteValue ( Context * c,
const QString & key )
static

Removes the session key.

Definition at line 209 of file session.cpp.

References QVariant::isNull(), Cutelyst::Context::setStash(), Cutelyst::Context::stash(), and QVariant::toHash().

◆ deleteValues()

void Session::deleteValues ( Context * c,
const QStringList & keys )
static

◆ expires()

quint64 Session::expires ( Context * c)
static

This method returns the time when the current session will expire, or 0 if there is no current session. If there is a session and it already expired, it will delete the session and return 0 as well.

Definition at line 123 of file session.cpp.

References expires(), and Cutelyst::Context::stash().

Referenced by changeExpires(), and expires().

◆ id()

QString Session::id ( Cutelyst::Context * c)
static

Returns the current session id or null if there is no current session

Definition at line 105 of file session.cpp.

References QVariant::isNull(), Cutelyst::Context::stash(), and QVariant::toString().

Referenced by changeExpires().

◆ isValid()

bool Session::isValid ( Cutelyst::Context * c)
static

Returns true if the session is valid.

Definition at line 259 of file session.cpp.

◆ setStorage()

void Session::setStorage ( SessionStore * store)

Sets the session storage

Definition at line 91 of file session.cpp.

References Session(), and QObject::setParent().

◆ setup()

◆ setValue()

void Session::setValue ( Cutelyst::Context * c,
const QString & key,
const QVariant & value )
static

◆ storage()

SessionStore * Session::storage ( ) const

Returns the session storage

Definition at line 99 of file session.cpp.

References Session().

◆ value()

QVariant Session::value ( Cutelyst::Context * c,
const QString & key,
const QVariant & defaultValue = QVariant() )
static

Returns the value for session key. If the session key doesn't exist, returns defaultValue.

Definition at line 170 of file session.cpp.

References QVariant::isNull(), Cutelyst::Context::stash(), and QVariant::toHash().

Referenced by Cutelyst::StatusMessage::load(), setValue(), and Cutelyst::AuthenticationRealm::userIsRestorable().