我在設置Symfony 2的安全性時遇到了一些問題。 我現在有這在我的security.yml多個提供商,多個防火牆和多個主機的Symfony 2安全問題
security:
encoders:
Acme\AdminBundle\Entity\AdminUsers:
algorithm: bcrypt
Acme\UserBundle\Entity\Users:
algorithm: bcrypt
role_hierarchy:
ROLE_USER: ROLE_USER
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers:
provider_admin:
entity: { class: AdminBundle:AdminUsers, property: username }
provider_user:
entity: { class: UserBundle:Users, property: username }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/login$
security: false
anonymous: ~
recover:
pattern: ^/(recover-password|generate-hash)$
security: false
anonymous: ~
secured_area:
pattern: ^/
provider: provider_admin
host: admin.example.dev
form_login:
check_path: /login_check
login_path: /login
always_use_default_target_path: false
default_target_path:/
username_parameter: _username
password_parameter: _password
logout:
path: /logout
target:/
anonymous: ~
public_secured_area:
pattern: ^/dashboard
host: app.example.dev
provider: provider_user
form_login:
check_path: /dashboard/login_check
login_path: /login
always_use_default_target_path: false
default_target_path: /dashboard
username_parameter: _username
password_parameter: _password
logout:
path: /public/logout
target: /login
anonymous: ~
access_control:
- { path: ^/dashboard/*, roles: ROLE_USER }
- { path: ^/*, roles: ROLE_ADMIN }
正如你所看到的,我有2個不同的供應商,2個不同的防火牆和2個不同的主機。 這是因爲我需要從app.example.dev上的Users表和admin.example.dev上的AdminUsers表中的用戶登錄用戶。
這是我在我的管理的routing.yml:
login:
path: /login
host: admin.example.dev
defaults: { _controller: UserBundle:Security:login }
login_check:
path: /login_check
host: admin.example.dev
logout:
path: /logout
host: admin.example.dev
而這就是我在我的應用的routing.yml
public_login:
path: /login
host: app.example.dev
defaults: { _controller: PublicBundle:Default:login }
public_login_check:
path: /dashboard/login_check
host: app.example.dev
public_logout:
path: /dashboard/logout
host: app.example.dev
事情是這樣的設置現在一切工作正常在管理端。 在應用程序方面的註銷不起作用,它說:
Unable to find the controller for path "/dashboard/logout". Maybe you forgot to add the matching route in your routing configuration?
404 Not Found - NotFoundHttpException
他們似乎以類似的方式設置,但這種情況的解決方案是爲我設置在應用的實際控制人。註銷路由,添加註銷操作與實際註銷並重定向代碼爲此工作。 這告訴我什麼是錯的。任何想法是什麼?
也是因爲我在security.yml文件的access_control部分中的2個條目被反轉,直到我再次閱讀文檔並且我明白那裏的路徑需要從列表中特別是一般。
所以我的第二個問題是關於這個問題:有沒有辦法將Access_control條目綁定到某個防火牆或至少是一個主機?
編輯: 雖然我得到了答案,但請參閱下面的內容,但我仍想了解我的最後一個問題,即上面的2段是否是有效的。
謝謝。
是的,你是對的更令人討厭的是我知道註銷路線需要在防火牆後面,但顯然儘管花了30分鐘來解決這個問題,我錯過了錯誤的註銷路徑n security.yml。過去幾天我改變了很多東西,導致我忘記了這個/公共網址。謝謝。 – cbaltatescu 2014-11-24 12:09:41