我已经用 symfony 4.3 开始了一个项目。注册和验证用户的代码是使用控制台生成的,使用bin/console make:auth
and bin/console make:registration-form
,除此之外我并没有真正修改它。
现在,我有一些页面仅限于某些用户角色。这是在 config/packages/security.yaml 中配置的,例如
security:
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
我还有一个允许我修改用户角色的表单。现在这是问题的症结所在:如果我修改当前连接的用户的角色,他可以访问的页面在他注销并再次登录之前不会改变。由于数据库已正确更新,这意味着他以前的角色仍存储在某个地方。我需要知道在哪里,这样我就可以在不强制他注销并重新登录的情况下更新它。
我不认为它在一个普通文件中,因为find . -mmin 5
在我创建一个新用户并以他们身份登录后什么也找不到。我见过提到 var/cache//session,但我没有这个目录。我在数据库中也看不到任何内容,在我的浏览器上也看不到任何带有信息的 cookie。
那么,Symfony 在哪里存储登录用户的信息呢?
https://stackoverflow.com/a/57676864/11410707
这个解决了(部分)我的问题,但前提是我修改了当前用户,而不是修改另一个用户。我仍然对令牌的存储位置感兴趣。
即使两个链接都没有提供答案,问题也已被锁定,所以在这里记录一下:
登录用户的信息存储在每个用户的 PHP 会话中。反过来,PHP 会话作为纯文件存储在目录 /var/opt/remi/php73/lib/php/session/ 中(至少在我的 CentOS 安装中)。
每个会话只能由相应的用户访问,由 cookie PHPSESSID 标识。因此,无法直接刷新远程用户的会话。