我在PHP 7.3.4上使用Symfony 4.3.2 这是我的security.yaml
security:
providers:
admin_provider:
entity:
class: App\Entity\Admin
property: username
user_provider:
entity:
class: App\Entity\User
property: username
chain_provider:
chain:
providers: [user_provider, admin_provider]
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
backoffice:
pattern: ^/
provider: admin_provider
anonymous: true
logout:
path: admin.logout
target: admin.login
form_login:
login_path: admin.login
check_path: admin.login
default_target_path: admin.index
main:
pattern: ^/
provider: user_provider
anonymous: true
logout:
path: logout
target: login
remember_me:
secret: '%kernel.secret%'
lifetime: 604800 # 1 week in seconds
path: /
form_login:
login_path: login
check_path: login
access_control:
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, roles: ROLE_ADMIN }
- { path: ^/mon-compte, roles: ROLE_USER }
encoders:
App\Entity\User:
algorithm: auto
cost: 12
App\Entity\Admin:
algorithm: auto
cost: 12
我当然有表格,控制器和视图。
现在发生的是:
我在事件探查器中检查了我的请求,在表单上进行POST时,可以在用户会话中看到会话“ _security_main”。
C:74:"Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken":294:{a:3:{i:0;N;i:1;s:4:"main";i:2;a:5:{i:0;C:15:"App\Entity\User":29:{a:2:{i:0;i:8;i:1;s:4:"test";}}i:1;b:1;i:2;a:1:{i:0;O:41:"Symfony\Component\Security\Core\Role\Role":1:{s:47:"\x00Symfony\Component\Security\Core\Role\Role\x00role";s:13:"ROLE_CUSTOMER";}}i:3;a:0:{}i:4;a:1:{i:0;s:13:"ROLE_CUSTOMER";}}}}"
但是在我的旧Symfony项目3.4中,我成功进行了身份验证并获得了管理会话。
我不明白为什么在我的新版本中它不起作用.. 也许会话一生?会话的可写权限?
唯一有效的解决方案是在“记住我”框中打勾
谢谢帮助