全部! 我想用安全系统一起保护我的应用程序。 security.yml 文件下方
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/{_locale}/demo/secured/login$
security: false
secured_area:
pattern: ^/{_locale}/demo/secured/
form_login:
check_path: /{_locale}/demo/secured/login_check
login_path: /{_locale}/demo/secured/login
logout:
path: /{_locale}/demo/secured/logout
target: /{_locale}/demo/
问题:
logout->target return 不起作用。 有人可以帮助我吗?
PS:任何示例将不胜感激!
谢谢
最佳答案
只需确保为所有使用语言环境变量的路由定义路由,并且安全性似乎会自动选择它。无需在安全配置中考虑语言环境。
这是我项目中的一个示例。
摘自security.yml
:
login:
pattern: /(game|admin)/login$
security: false
admin:
pattern: /admin/
form_login:
check_path: /admin/login_check
login_path: _admin_login
logout:
path: _admin_logout
target: _home
game:
pattern: /game/
form_login:
check_path: /game/login_check
login_path: _game_login
logout:
path: _game_logout
target: _home
摘自routing.yml
:
BrowserMMOSecurityBundle:
resource: "@BrowserMMOSecurityBundle/Controller/"
type: annotation
prefix: /{_locale}/
defaults: { _locale: en }
requirements:
_locale: en|fr
_game_login_check:
pattern: /game/login_check
_admin_login_check:
pattern: /admin/login_check
_admin_logout:
pattern: /{_locale}/admin/logout
requirements:
_locale: en|fr
_game_logout:
pattern: /{_locale}/game/logout
requirements:
_locale: en|fr
上面的配置对我有用。还值得注意的是,_admin_login
和 _game_login
路由是在我的 SecurityController
类的注释中定义的。
关于php - Symfony2 : How to: secure application with _locale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137814/