mirror of
https://github.com/filegator/filegator.git
synced 2025-07-31 19:20:21 +02:00
96 lines
3.8 KiB
Markdown
96 lines
3.8 KiB
Markdown
---
|
|
currentMenu: sessions
|
|
---
|
|
|
|
## Default Session handler
|
|
|
|
Session handling is provided through the Symfony's [HttpFoundation](https://symfony.com/doc/4.4/components/http_foundation.html) component. Please check their docs for more info.
|
|
|
|
Default session handler will user PHP's built in file storage. You can also specify your own `$save_path` to store session files.
|
|
|
|
```
|
|
'Filegator\Services\Session\SessionStorageInterface' => [
|
|
'handler' => '\Filegator\Services\Session\Adapters\SessionStorage',
|
|
'config' => [
|
|
'handler' => function () {
|
|
$save_path = null; // use default system path
|
|
//$save_path = __DIR__.'/private/sessions';
|
|
$handler = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler($save_path);
|
|
|
|
return new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage([], $handler);
|
|
},
|
|
],
|
|
],
|
|
```
|
|
## Configuring Session service to use database
|
|
|
|
First, create a table `sessions` with this sql:
|
|
```
|
|
CREATE TABLE `sessions` (
|
|
`sess_id` varbinary(128) NOT NULL,
|
|
`sess_data` blob NOT NULL,
|
|
`sess_lifetime` mediumint(9) NOT NULL,
|
|
`sess_time` int(10) unsigned NOT NULL,
|
|
PRIMARY KEY (`sess_id`)
|
|
) CHARSET=utf8 COLLATE=utf8_bin;
|
|
```
|
|
|
|
Then, open `configuration.php` and update Session handler to:
|
|
|
|
```
|
|
'Filegator\Services\Session\SessionStorageInterface' => [
|
|
'handler' => '\Filegator\Services\Session\Adapters\SessionStorage',
|
|
'config' => [
|
|
'handler' => function () {
|
|
$handler = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler(
|
|
'mysql://root:password@localhost:3306/filegator'
|
|
);
|
|
|
|
return new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage([], $handler);
|
|
},
|
|
],
|
|
],
|
|
|
|
```
|
|
Don't forget to enter correct database details.
|
|
|
|
## Configuring Session service to use Redis
|
|
|
|
You must require additional [predis](https://github.com/nrk/predis/) library `composer require predis/predis`
|
|
|
|
```
|
|
'Filegator\Services\Session\SessionStorageInterface' => [
|
|
'handler' => '\Filegator\Services\Session\Adapters\SessionStorage',
|
|
'config' => [
|
|
'handler' => function () {
|
|
$predis = new \Predis\Client('tcp://127.0.0.1:6379');
|
|
$handler = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler($predis);
|
|
|
|
return new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage([], $handler);
|
|
},
|
|
],
|
|
],
|
|
```
|
|
|
|
## Tweaking session options
|
|
|
|
The underying [session component](https://github.com/symfony/symfony/blob/4.4/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php) accepts array of options.
|
|
For example you can pass `cookie_lifetime` parameter to extend default session lifetime:
|
|
```
|
|
'Filegator\Services\Session\SessionStorageInterface' => [
|
|
'handler' => '\Filegator\Services\Session\Adapters\SessionStorage',
|
|
'config' => [
|
|
'handler' => function () {
|
|
$handler = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler(
|
|
'mysql://root:password@localhost:3306/filegator'
|
|
);
|
|
|
|
return new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage([
|
|
'cookie_lifetime' => 365 * 24 * 60 * 60, // one year
|
|
], $handler);
|
|
},
|
|
],
|
|
],
|
|
|
|
```
|