根据Symfony文档,需要在security.yml文件中指定登录表单,也需要在login_check路径中指定。到目前为止,我的应用程序工作正常,用户尝试访问一个安全页面(mysite.com/edit/123),如果他们没有登录,他们将被重定向到/登录,他们登录后将再次重新发送到原始打算路径(/ edit / 123)。
类似的问题:Two separate login pages in Symfony 2
现在的问题是,我需要一个不同的登录表单,让我们说/ minimal_login,我需要在security.yml上包含它,但我知道的唯一方法就是创建一个不同的防火墙,正如我在文档中看到的那样创建一个单独的识别方案,所以我想不同防火墙记录的用户不能共享相同的安全页面,这不是我想要的。
如果用户尝试访问任何安全页面但/ popup将被重定向到/ login,但如果他们尝试访问/弹出(并且未记录),则会将其重定向到/ minimal_login。无论用户如何登录我的应用程序,他们将始终共享相同的访问权限,我的意思是,如果他们使用/ login或/ minimal_login登录,他们可以访问相同的页面。
jms_security_extra:
secure_all_services: false
expressions: true
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers:
main:
entity: {class: Done\PunctisBundle\Entity\User, property: username}
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
remember_me:
key: %secret%
lifetime: 3600
path: /
domain: ~
pattern: ^/
anonymous: ~
form_login:
login_path: /login
check_path: /login_check
logout:
path: /logout
target: /
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/signup, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/verification, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/popup/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/ajax/track, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/ajax/socialbox, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
encoders:
Done\PunctisBundle\Entity\User:
algorithm: md5
iterations: 1
encode_as_base64: false
答案 0 :(得分:6)
我遇到了类似的问题,我使用firewall context
配置解决了问题。
firewalls:
somename:
# ...
context: my_context
othername:
# ...
context: my_context
http://symfony.com/doc/current/reference/configuration/security.html#firewall-context