Symfony 3.4.6 - "Token "XXXXXX“未在数据库中找到。”
Symfony 3.4.6 - "Token "XXXXXX" was not found in the database."
我正在尝试测试和调试 Symfony 网络应用程序。使用 app_dev.php
前端 controller/environment 查看站点时,Web 调试工具栏未加载,当我单击 'Open the web profiler' 时,出现以下错误:
Token "XXXXX" was not found in the database
*注意:这不是 XXXXX 的字面值,而是每次我尝试打开探查器时它正在寻找的标记都会发生变化。
我也无法登录网站的管理区域,可能是因为这个令牌错误。
我认为这可能是我的 security.yml
的设置方式的问题,但我没有发现任何问题。这是:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
fos_userbundle:
id: fos_user.user_provider.username
in_memory:
memory: ~
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern:
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
config.yml
中的相关片段:
fos_user:
db_driver: orm
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
address: noreply@someplace.com
sender_name: 'someplace'
并且,为了完整起见,引用 config_dev.yml
中工具栏的部分:
framework:
router:
resource: '%kernel.project_dir%/app/config/routing_dev.yml'
strict_requirements: true
profiler: { only_exceptions: false }
web_profiler:
toolbar: true
intercept_redirects: false
最后,鉴于FOSUserBundle是我的用户提供者,我也执行了bin/console doctrine:schema:update --force
,但问题仍然存在。
想通了。它是一个未完全安装的服务的组合,在 services.yml
中有一个条目,但缺少文件,以及我的 /var
目录的错误 permissions/ownership。我的所有应用程序都有一个单独的 linux 用户来模拟生产服务器上的内容(每个站点都有自己的 PHP-FPM 池,并且 none 具有 root 或 sudo 权限)。
因此,话虽如此,在 services.yml
和 运行 $ sudo chown -R siteuser:siteuser /path/to/this/site/project
中注释掉不完整的服务就成功了。
我正在尝试测试和调试 Symfony 网络应用程序。使用 app_dev.php
前端 controller/environment 查看站点时,Web 调试工具栏未加载,当我单击 'Open the web profiler' 时,出现以下错误:
Token "XXXXX" was not found in the database
*注意:这不是 XXXXX 的字面值,而是每次我尝试打开探查器时它正在寻找的标记都会发生变化。
我也无法登录网站的管理区域,可能是因为这个令牌错误。
我认为这可能是我的 security.yml
的设置方式的问题,但我没有发现任何问题。这是:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
fos_userbundle:
id: fos_user.user_provider.username
in_memory:
memory: ~
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern:
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
config.yml
中的相关片段:
fos_user:
db_driver: orm
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
address: noreply@someplace.com
sender_name: 'someplace'
并且,为了完整起见,引用 config_dev.yml
中工具栏的部分:
framework:
router:
resource: '%kernel.project_dir%/app/config/routing_dev.yml'
strict_requirements: true
profiler: { only_exceptions: false }
web_profiler:
toolbar: true
intercept_redirects: false
最后,鉴于FOSUserBundle是我的用户提供者,我也执行了bin/console doctrine:schema:update --force
,但问题仍然存在。
想通了。它是一个未完全安装的服务的组合,在 services.yml
中有一个条目,但缺少文件,以及我的 /var
目录的错误 permissions/ownership。我的所有应用程序都有一个单独的 linux 用户来模拟生产服务器上的内容(每个站点都有自己的 PHP-FPM 池,并且 none 具有 root 或 sudo 权限)。
因此,话虽如此,在 services.yml
和 运行 $ sudo chown -R siteuser:siteuser /path/to/this/site/project
中注释掉不完整的服务就成功了。