【发布时间】:2013-11-18 14:58:04
【问题描述】:
我有一个安装了FOSUserBundle 的 Symfony2 项目。当用户尝试访问http://myhost.com/forum 时,系统会将他重定向到http://myhost.com/login。
这是我的security.yml 文件:
jms_security_extra:
secure_all_services: false
expressions: true
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: /demo/secured/login_check
login_path: /demo/secured/login
logout:
path: /demo/secured/logout
target: /demo/
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
access_control:
- { path: /login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /admin/, role: ROLE_ADMIN }
- { path: /forum/, role: ROLE_USER }
现在我重新生成了 URL,以便按照本教程进行翻译:https://coderwall.com/p/eiqd_g
一切正常,除非我尝试访问 http://myhost.com/en/forum ,因为它重定向到 http://myhost.com/login 而不是 http://myhost.com/en/login
我错过了什么?
更新:
由于我在main (login_path) 处添加了一行:
main:
pattern: ^/
form_login:
login_path: /%locale%/login
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
它重定向到 http://myhost.com/es/login 而不是 http://myhost.com/en/login ,而其他 URL 保留 /en/ URL。实际上,/es/ 并不存在,因为它是默认语言。有什么建议吗?
【问题讨论】:
标签: php symfony login internationalization fosuserbundle