【发布时间】:2012-03-28 13:57:04
【问题描述】:
我在我的应用上处理身份验证的方式是将 100% 的所有内容置于身份验证之后,然后指定某些例外情况。
这些例外包括登录页面和其他一些页面。一切工作正常,除了一个部分:“默认”页面,或任何你想调用的页面。显然,我不希望人们必须登录才能看到我网站的首页,但我不知道如何使身份验证不需要。
这是我的欢迎页面路线:
_welcome:
pattern: /
defaults: { _controller: VNNPressboxBundle:User:welcome }
这是我的app/config/security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: sha1
iterations: 1
encode_as_base64: false
VNN\PressboxBundle\Entity\User:
algorithm: sha1
iterations: 1
encode_as_base64: false
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
administrators:
entity: { class: VNNPressboxBundle:User, property: username }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
form_login: ~
logout: ~
anonymous: ~
http_basic:
realm: "Secured Demo Area"
access_control:
- { path: ^/_welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/new, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/create, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/thanks, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/agreement, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/activate, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/signup, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: ROLE_USER }
相关的部分当然是这样的:
access_control:
- { path: ^/_welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }
即使我设置了这种方式,当我尝试进入欢迎页面时,我总是会被引导到登录屏幕(我的意思是http://myapp.com/app_dev.php,而不是http://myapp.com/app_dev.php/user/welcome)。我错过了什么?
【问题讨论】:
标签: security symfony url-routing