已安装symfony/security-core仍出现Twig未知is_granted函数问题求助
解决方案
- 首先核查
config/packages/security.yaml是否正确配置了基础规则:Symfony的Security组件默认只有配置了至少一个可用防火墙后才会自动注册Twig的SecurityExtension,最低可运行的参考配置如下:
# config/packages/security.yaml security: enable_authenticator_manager: true password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' providers: users_in_memory: { memory: null } firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: lazy: true provider: users_in_memory
- 核查
config/packages/twig.yaml是否存在自定义扩展排除规则:确认没有将Symfony\Bridge\Twig\Extension\SecurityExtension加入到排除加载的扩展列表中。 - 手动注册SecurityExtension:如果上述配置排查无异常,可直接在
config/services.yaml中手动注册扩展,无需修改vendor目录文件,配置如下:
# config/services.yaml services: twig.extension.security: class: Symfony\Bridge\Twig\Extension\SecurityExtension arguments: ['@security.authorization_checker'] tags: ['twig.extension']
- 清除Symfony缓存:所有配置修改完成后执行
php bin/console cache:clear,生产环境需追加--env=prod参数生效。 - 验证扩展状态:执行命令
php bin/console debug:container twig.extension.security查看扩展注册状态,正常输出扩展元数据则代表注册成功。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

