2013-04-18 77 views
0

我編寫了一個應用程序,我需要將所有內容(登錄頁面除外)都保護起來並重定向到登錄。我嘗試了http://symfony.com/doc/master/book/security.html(避免常見陷阱 - >確保登錄頁面不安全)的解決方案,但它不能幫助我 - 我的請求仍然被重定向到無限循環。Symfony2 - 保護所有內容

這裏是我的security.yml文件firewalls部分:

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    login: 
     pattern: ^/login$ 
     security: false 

    secured_area: 
     pattern: .* 
     anonymous: ~ 
     form_login: 
      login_path: login 
      check_path: login_validation 
      success_handler: authentication_handler 
     remember_me: 
      key:  "%secret%" 
      lifetime: 31536000 # 365 days in seconds 
      path: /
      domain: ~ # Defaults to the current domain from $_SERVER 

預先感謝您的任何幫助。

編輯:當然我只想登錄和完全身份驗證的用戶有任何訪問權限。

+0

你的'access_control'部分在哪裏? – cheesemacfly

+0

我還沒有'access_control'。它是空的。 –

回答

0

我相信你還需要允許匿名訪問你的支票路徑。

0

進入security.yml

firewalls: 
    main: 
    pattern: .* 
    form_login: 
    provider: fos_userbundle 
    csrf_provider: form.csrf_provider 
    default_target_path: /index #everything you want to redirect after login to 
    always_use_default_target_path: true 
    logout:  true 
    anonymous: true 
access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/.*, role: ROLE_USER } #is just a role example, change it 

這將這樣的伎倆

你錯過第二部分(access_control一個),將觸發一個firewall事件通過此防火牆逮住(在這種情況下main

+0

它幾乎做到了這一點,但碰撞模式'^ /。*'和'^/login $'仍然使我跳入無限循環 - 將'^ /。*'改爲'^((?! login)。)* $'解決了我的問題。 –

+0

@KamilSołtysik:這告訴你你做錯了什麼。這個配置對我來說非常合適(現在只是測試過) – DonCallisto

+0

@KamilSołtysik:你可以附加你的security.yml嗎?從開始到結束。這是因爲你在做什麼告訴你有什麼不對,這可能會導致你未來的問題 – DonCallisto