我的應用程序有問題。我爲每個部分設置了三個防火牆。一個用於後端,一個用於前端,一個用於Extranet部分。他們都有相同的用戶提供商(FOSUserBundle),它工作正常,直到我添加一個新的防火牆(外聯網)。現在,在這個防火牆中,當我嘗試訪問domain.com/extranet/時,我得到一個無限循環,但其他防火牆正常工作。Symfony2多個防火牆循環錯誤其中之一
這裏是我的配置:
security.yml
firewalls:
extranet:
pattern: /extranet(.*)
form_login:
provider: fos_userbundle
login_path: extranet_login
check_path: extranet_login_check
default_target_path: extranet_home
logout:
path: extranet_login_logout
target: page_home
anonymous: false
security: true
context: application
remember_me:
key: XXXXXXX
lifetime: 86400
admin:
pattern: /admin(.*)
form_login:
provider: fos_userbundle
login_path: admin_login
check_path: admin_login_check
default_target_path: admin_home
logout:
path: admin_logout
target: page_home
anonymous: true
security: true
context: application
remember_me:
key: XXXXXXX
lifetime: 86400
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
security: true
context: application
remember_me:
key: XXXXXXX
lifetime: 86400
ACCESS_CONTROL:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/extranet/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/extranet/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/extranet/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/extranet/, role: ROLE_DISTRIBUTOR }
的routing.yml
#Login
login_check:
pattern: /login_check
logout:
pattern: /logout
#extranet login
extranet_login:
pattern: /extranet/login
defaults: { _controller: FOSUserBundle:Security:login }
extranet_login_check:
pattern: /extranet/login_check
defaults: { _controller: FOSUserBundle:Security:check }
extranet_logout:
pattern: /extranet/logout
defaults: { _controller: FOSUserBundle:Security:logout }
#admin login
admin_login:
pattern: /admin/login
defaults: { _controller: FOSUserBundle:Security:login }
admin_login_check:
pattern: /admin/login_check
defaults: { _controller: FOSUserBundle:Security:check }
admin_logout:
pattern: /admin/logout
defaults: { _controller: FOSUserBundle:Security:logout }
最後,我的安全控制器。
class SecurityController extends BaseController
{
/**
* {@inheritDoc}
*/
public function renderLogin(array $data)
{
$requestAttributes = $this->container->get('request')->attributes;
if ('admin_login' === $requestAttributes->get('_route')) {
$template = sprintf('WebBundle:Backend:login.html.twig');
} elseif ('extranet_login' === $requestAttributes->get('_route')) {
$template = sprintf('WebBundle:Extranet:login.html.twig');
} else {
$template = sprintf('FOSUserBundle:Security:login.html.twig');
}
return $this->container->get('templating')->renderResponse($template, $data);
}
}
什麼可能是錯的?我嘗試了很多變化,但當我修復時,另一個失敗...
先謝謝您!
你爲什麼在extranet防火牆中定義了'anonymous:false'? –
@DanMironis這是...我做錯了複製和粘貼!我現在正在測試,但我認爲它已經解決了! – David