Skip to content

A Yii2 adaptation of the persistent session technique used by Amazon.com

Notifications You must be signed in to change notification settings

mipotech/yii2-persistent-session

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

Yii2 Persistent Session

This package provides a simple way to implement persistent sessions, otherwise known as "server-side cookies".

Installation

The preferred way to install this extension is through composer.

Simply add this line:

"mipotech/yii2-persistent-session": "*",

to the require section of your composer.json file and perform a composer update.

Configuration

Add persistentSession as an application component in @app/config/web.php:

'components' => [
    ...
    'persistentSession' => [
        /* Required settings */
        'class' => 'mipotech\persistentsession\PersistentSession',
        
        /* Optional settings */
        //'db' => '...',            // MongoDB application component. Defaults to 'mongodb'
        //'collection' => '...',    // The name of the collection to store the session data. Defaults to 'persistent_session'
        //'cookieClass' => '...'    // The class to used to generate a new cookie. Defaults to 'yii\web\Cookie'
        //'cookieKey' => '...',     // The cookie key to use for identifying the persistent session. Defaults to 'session-id'
        //'cookieParams' => '...',  // The default cookie parameters. Defaults to ['httpOnly' => true, 'secure' => true]
        //'uniqidPrefix' => '...',  // The prefix to use for generating a new session identifier. Defaults to ''
    ]
    ...
]

That's it. The package is set up and ready to go.

Usage

The functionality of this component is intended to be as close as possible to native Yii2 sessions (API documentation and user guide).

Opening and Closing Sessions

$persistentSession = Yii::$app->persistentSession;

// check if a session is already open
if ($persistentSession->isActive) ...

// open a session
$persistentSession->open();

// destroys all data registered to a session.
$persistentSession->destroy();

Accessing Session Data

$persistentSession = Yii::$app->persistentSession;

// get a session variable.
$language = $persistentSession->get('language');

// set a session variable. The following usages are equivalent:
$persistentSession->set('language', 'en-US');

// remove a session variable. The following usages are equivalent:
$persistentSession->remove('language');

// check if a session variable exists. The following usages are equivalent:
if ($persistentSession->has('language')) ...