我想在注册过程后立即让用户登录,而不通过登录表单。
这可能吗 ?我找到了 FOSUserBundle
的解决方案,但我没有在我实际从事的项目中使用它。
这是我的 security.yml,我正在使用两个防火墙。纯文本编码器仅用于测试。
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
Ray\CentralBundle\Entity\Client: md5
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
admin: { password: admin, roles: [ 'ROLE_ADMIN' ] }
entity:
entity: { class: Ray\CentralBundle\Entity\Client, property: email }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
user_login:
pattern: ^/user/login$
anonymous: ~
admin_login:
pattern: ^/admin/login$
anonymous: ~
admin:
pattern: ^/admin
provider: in_memory
form_login:
check_path: /admin/login/process
login_path: /admin/login
default_target_path: /admin/dashboard
logout:
path: /admin/logout
target: /
site:
pattern: ^/
provider: entity
anonymous: ~
form_login:
check_path: /user/login/process
login_path: /user/login
default_target_path: /user
logout:
path: /user/logout
target: /
access_control:
- { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user, roles: ROLE_USER }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
原文由 rayfranco 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,您可以通过类似于以下内容的方式执行此操作:
当您将令牌设置到上下文中时,最后触发的事件不会自动完成,而通常在使用登录表单或类似表单时会自动完成。因此将它包括在这里的原因。您可能需要根据您的用例调整使用的令牌类型 - 上面显示的
UsernamePasswordToken
是核心令牌,但如果需要,您可以使用其他令牌。编辑:根据下面 Franco 的评论,调整以上代码以解释“public”参数,并将用户角色添加到令牌创建中。