The SessionServiceProvider provides a service for storing data persistently between requests.
session.storage.save_path (optional): The path for the
NativeFileSessionHandler
, defaults to the value of
sys_get_temp_dir()
.
session.storage.options: An array of options that is passed to the
constructor of the session.storage
service.
In case of the default NativeSessionStorage, the most useful options are:
However, all of these are optional. Default Sessions life time is 1800
seconds (30 minutes). To override this, set the lifetime
option.
For a full list of available options, read the PHP official documentation.
session.test: Whether to simulate sessions or not (useful when writing functional tests).
session.storage
for data access. Defaults to a NativeFileSessionHandler
storage handler.1 | $app->register(new Silex\Provider\SessionServiceProvider());
|
The Session provider provides a session
service. Here is an example that
authenticates a user and creates a session for them:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$app->get('/login', function (Request $request) use ($app) {
$username = $request->server->get('PHP_AUTH_USER', false);
$password = $request->server->get('PHP_AUTH_PW');
if ('igor' === $username && 'password' === $password) {
$app['session']->set('user', array('username' => $username));
return $app->redirect('/account');
}
$response = new Response();
$response->headers->set('WWW-Authenticate', sprintf('Basic realm="%s"', 'site_login'));
$response->setStatusCode(401, 'Please sign in.');
return $response;
});
$app->get('/account', function () use ($app) {
if (null === $user = $app['session']->get('user')) {
return $app->redirect('/login');
}
return "Welcome {$user['username']}!";
});
|
If your system is using a custom session configuration (such as a redis handler
from a PHP extension) then you need to disable the NativeFileSessionHandler by
setting session.storage.handler
to null. You will have to configure the
session.save_path
ini setting yourself in that case.
1 | $app['session.storage.handler'] = null;
|