Symfony2 security

A symfony2-ben a felhasználók azonosításának a konfigrálása a app\config\security.yml fájlban található. Itt lehet még a jogosultságokat is szabályozni, hogy ki mihez férhet hozzá.

Példa:
security:
    encoders:
        Web\UserBundle\Entity\User:
            algorithm: bcrypt
            cost: 12

    providers:
        chain_provider:
            chain:
                providers: [user_db]
        user_db:
            entity: { class: WebUserBundle:User, property: username }

    firewalls:
        secured_area:
            anonymous: ~
            pattern:    ^/
            http_basic: ~
            form_login:
                login_path: login
                check_path: login_check	
                default_target_path: /
            logout:
                path:   /logout
                target: /

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]

    access_control:
        - { path: ^/edit, roles: ROLE_ADMIN }
Én jelen példában adatbázis alapú felhasználói azonosítást készítettem. Ehhez szükség lesz majd készíteni egy Web\UserBundle csomagot.
Az encoders résznél bcrypt -es titkosítást választottam és 12-es "erősségűre" állítottam a titkosítást. Ezt lehet "erősebbre" is állítani, de megnőhet a titkosítás erőforrás igénye, ezért érdemes jól belőni az adott szerverhez, hogy mi az amit még elbír optimális sebesség mellett a szerver.

A providers-nél beállíthatjuk, hogy adatbázisból és melyik entity-ből működjön majd az azonosítás. Itt beállíthatunk egyedi "kézzel" megadott felhasználóinevet és jelszót is.

Role_hierarchy -nál a jogosultsági szinteket lehet variálni.

A firewalls -ban a login és a login_check metódusok fogják a bejelentkezésnél ellenőrizni a felhasználók adatait. A default_target_path paraméter határozza meg, hogy hova fogunk bejelentkezés után átirányítódni. A logout-al pedig kijelentkezünk majd a gyökérbe.

Az access_control-ban lehet beállítani, hogy melyik url-hez/route-hoz ki férhet hozzá. Itt pl az /edit route-hoz állítottuk be, hogy csak az admin jogosultságú személy léphet az oldalra.

A szükséges bundle-t és a metódusokat a symfony2 dokumentációjában levő példából könnyen el lehet készíteni: http://symfony.com/doc/current/cookbook/security/entity_provider.html

Olvasnivaló:
http://symfony.com/doc/current/cookbook/security/index.html
http://donna-oberes.blogspot.hu/2013/09/user-login-and-logout-step-by-step-with.html
2014.11.29.