2011-08-21 53 views
9

All! 我想一起保护我的应用程序与安全系统。 下面security.yml文件Symfony2:如何:使用_locale保护应用程序

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->目标回报desn't工作。 有人可以帮我吗?

PS:任何示例将不胜感激!

THX

回答

15

只要确保你为它们定义路由所有做使用的语言环境变量和安全似乎自动把它捡起来。不需要在安全配置中占用区域设置。

下面是我的项目示例。从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类的注释中定义。

+0

好的!非常感谢你!!它真的很有用!我有我的错误... –