我只是使用 symfony 配置 Pdo 会话,这对我来说绝对没问题,但现在我想添加一些额外的字段,如用户 IP、用户 ID 等,以便稍后生成报告,说明哪个用户从哪个区域登录,所以我找不到办法将新列添加到会话表中,因为它的工作方式有点不同
这是我的
services.yaml
文件:
Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
arguments:
- !service { class: PDO, factory: 'database_connection:getWrappedConnection' }
- { lock_mode: 1 }
//framework.yaml
session:
enabled: true
gc_maxlifetime: 36000 #10 hours custom session time
handler_id: 'Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler'
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
cookie_secure: auto
cookie_samesite: lax
数据库表:
CREATE TABLE `sessions` (
`sess_id` VARCHAR(128) NOT NULL PRIMARY KEY,
`sess_data` BLOB NOT NULL,
`sess_time` INTEGER UNSIGNED NOT NULL,
`sess_lifetime` MEDIUMINT NOT NULL
) COLLATE utf8_bin, ENGINE = InnoDB;
通过按名称用户日志创建第三个表并将会话 ID 和用户 ID 传递到其中(已创建会话和用户表)以及一些额外字段(如 ip 位置等)解决了问题。每当用户登录时,请输入此表