Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][Symfony]Firewall zabezpieczenie strony
borpaw
post 1.12.2014, 10:28:12
Post #1





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


W jaki sposób można zabezpieczyć dostęp do ścieżki routingu nie wpisując w każdą funkcję kontrolera zabezpieczenia typu:

  1. $securityContext = $this->container->get('security.context');
  2. if (!$securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  3. return $this->redirect($this->generateUrl('homepage'));
  4. }


Chodzi o to żeby dostęp był automatycznie zabroniony dla ścieżki rozpoczynającej się od np:

  1. /profil
  2. /profil/new
  3. /profil/delete
  4. /profil/.....


Czy to się da ustawić w security.yml? Z tym, że jeśli się da to jak przekierować na homepage a nie do logowania?

Ten post edytował borpaw 1.12.2014, 10:28:54
Go to the top of the page
+Quote Post
Crozin
post 1.12.2014, 10:32:50
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tak, da się. W security.yml:
Kod
security:
  access_control:
    - { path: '^/profil/', role: IS_AUTHENTICATED_REMEMBERED }


Ten post edytował Crozin 1.12.2014, 10:33:10
Go to the top of the page
+Quote Post
borpaw
post 1.12.2014, 10:44:34
Post #3





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


Próbowałem tego też ale to działa mi tylko na ścieżkę /profil a na /profil/... już nie, może trzeba coś jeszcze dopisać?
Go to the top of the page
+Quote Post
Crozin
post 1.12.2014, 11:05:40
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Pokaż Twój kompletny kod.
Go to the top of the page
+Quote Post
borpaw
post 1.12.2014, 11:15:34
Post #5





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


security.yml

  1. security:
  2. encoders:
  3. FOS\UserBundle\Model\UserInterface: sha512
  4. role_hierarchy:
  5. ROLE_ADMIN: [ROLE_USER, ROLE_SONATA_ADMIN]
  6. ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
  7. SONATA:
  8. - ROLE_SONATA_PAGE_ADMIN_PAGE_EDIT # if you are using acl then this line must be commented
  9.  
  10. providers:
  11. fos_userbundle:
  12. id: fos_user.user_manager
  13.  
  14. firewalls:
  15. # Disabling the security for the web debug toolbar, the profiler and Assetic.
  16. dev:
  17. pattern: ^/(_(profiler|wdt)|css|images|js)/
  18. security: false
  19.  
  20. # -> custom firewall for the admin area of the URL
  21. admin:
  22. pattern: /admin(.*)
  23. context: user
  24. form_login:
  25. provider: fos_userbundle
  26. login_path: /admin/login
  27. use_forward: false
  28. check_path: /admin/login_check
  29. failure_path: null
  30. logout:
  31. path: /admin/logout
  32. anonymous: true
  33.  
  34. # -> end custom configuration
  35.  
  36. # default login area for standard users
  37.  
  38. # This firewall is used to handle the public login area
  39. # This part is handled by the FOS User Bundle
  40. main:
  41. pattern: .*
  42. context: user
  43. form_login:
  44. provider: fos_userbundle
  45. login_path: /
  46. use_forward: false
  47. check_path: /login_check
  48. failure_path: null
  49. always_use_default_target_path: false
  50. default_target_path: /success
  51. logout: true
  52. anonymous: true
  53.  
  54. access_control:
  55. # URL of FOSUserBundle which need to be available to anonymous users
  56. - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  57. - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
  58. - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
  59.  
  60. # Admin login page needs to be access without credential
  61. - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  62. - { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  63. - { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  64.  
  65. # Secured part of the site
  66. # This config requires being logged for the whole site and having the admin role for the admin part.
  67. # Change these rules to adapt them to your needs
  68. - { path: ^/admin/, role: [ROLE_ADMIN, ROLE_SONATA_ADMIN] }
  69. - { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
  70.  
  71. - { path: ^/profil/, role: [IS_AUTHENTICATED_REMEMBERED] }
Go to the top of the page
+Quote Post
Crozin
post 1.12.2014, 11:20:44
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Masz złą kolejność reguł:
Kod
        - { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }  
        - { path: ^/profil/, role: [IS_AUTHENTICATED_REMEMBERED] }
Do pierwszej pasują już wszystkie adresy, a sprawdzanie reguł kończy się na pierwszej pasującej.
Go to the top of the page
+Quote Post
borpaw
post 1.12.2014, 11:33:26
Post #7





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


A widzisz, faktycznie, nie pomyślałem o tym, teraz działa. Dzięki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 03:55