2011-11-30 72 views
5

是否有可能防火牆映射到一個給定的主機,像這樣的例子:每個主機的防火牆在Symfony2中

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    admin: 
     pattern: ^/ 
     host: admin.mysite.com 
     http_basic: 
      provider: in_memory 
      realm: 'MySite Admin' 
     logout: 
    main: 
     pattern: ^/ 
     anonymous: ~ 
     form_login: 
      provider: fos_userbundle 
     ... 

注意管理員防火牆下的假的「主機」參數。

將防火牆限制在特定主機上的功能可以讓每個主機都能輕鬆使用提供程序。有了不同的領域,人們不必擔心重疊模式。

+1

Symfony的2.2將能夠基於主機名的路線。我仍在檢查防火牆是否具有相同的功能並返回結果。 – GergelyPolonkai

回答

1

基本上,幾乎任何認證方案都可以用給定的安全概念來實現。在你的情況下,你可能需要定義一個EntryPoint來檢查用戶來自的主機。 但是,您應該記住,「主機」信息不一定值得信賴,並且可能不是您唯一的身份驗證措施。

如果您想了解如何實現您自己的身份驗證方案,請查看框架捆綁包中已提供的表單登錄身份驗證方案。安全工廠(Symfony \ Bundle \ SecurityBundle \ DependencyInjection \ Security \ Factory \ FormLoginFactory)處理動態配置和注入認證方案中涉及的所有類的好地方。 也可以查看symfony book's section on security以獲取安全包體系結構的高級視圖。