Symfony2 \ SecurityBundle

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд▓реЗрдЦрдХ рд╕реБрд░рдХреНрд╖рд╛ рдмрдВрдбрд▓ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рд┐рдореНрдлрдиреА рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рд╕рдордЭрдирд╛ рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдХрд░рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: Symfony2 Security in General рдФрд░ FOSUserBundle рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рд▓реЗрдЦ 21 рдорд╛рд░реНрдЪ, 2011 рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛, рдЬрдм рд╕рд┐рдореНрдлрдиреА 2.0 рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрдВрдбрд▓ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдирд╣реАрдВ рдмрджрд▓реЗред

рдореВрд▓ рд▓реЗрдЦ, "Symfony2 рдмреНрд▓реЙрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ V: рдкрд╣рдЪрд╛рди рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛," рдПрдХ рдмреНрд▓реЙрдЧ рдмрдирд╛рдиреЗ рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓реЗрдЦ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рд▓реЗрдЦ рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рдирд┐рд░рдВрддрд░рддрд╛ / рдкрд░рд┐рд╡рд░реНрдзрди рд╣реИ - "рд╕рд┐рдореНрдлрдиреА 2 рдмреНрд▓реЙрдЧ рдПрдкреНрд▓реАрдХреЗрд╢рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╛рд░реНрдЯ рд╡реА -2: рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕рд┐рдХреНрдпреЛрд░ рдкреЗрдЬ" , рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ "рдмрдВрдж" рднрд╛рдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред


рд▓реЗрдЦ рдкрд╛рда


Symfony2 рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕рд░рд▓ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, FOSUserBundle рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ Symfony2 рдХреЗ рдореВрд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдмрдВрдбрд▓ "sfGuardPlugin" рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреЗрд╡рд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдПред рд╕рд┐рдореНрдлрдиреА 1 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧ рдореБрдЭреЗ рд╕рдордЭреЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рд╢рд╛рдпрдж рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдФрд░ рдкреЛрд╕реНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред [ рдЕрджреНрдпрддрди: рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВред]

рддреЛ, рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдлреЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "/ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ /" рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ SecurityBundle рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ Symfony2 рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрдк рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд AppKernel.php рдХреЛ рдЦреЛрд▓реЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░рдмрдВрдбрд▓реНрд╕ рд╡рд┐рдзрд┐ рдвреВрдВрдвреЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдмрдВрдбрд▓ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

new Symfony\Bundle\SecurityBundle\SecurityBundle() 

рдЕрдм рдЬрдм рдмрдВрдбрд▓ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдЙрддрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рд╕рд┐рдореНрдлрдиреА 2 рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рддреАрди рдЙрдк-рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдгред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреМрди рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдПрдХ рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджреЗрдЦрдирд╛, рдЙрд╕рдХрд╛ рд╕рдВрдкрд╛рджрди рдХрд░рдирд╛ рдЖрджрд┐ред

рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Symfony2 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП Company \ BlogBundle \ Entity \ User рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдХреИрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреМрди рд╕реА рднреВрдорд┐рдХрд╛рдПрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ config.yml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

 ## Security Configuration security: encoders: Company\BlogBundle\Entity\User: algorithm: sha512 encode-as-base64: true iterations: 10 providers: main: entity: { class: BlogBundle:User, property: username } firewalls: main: pattern: /.* form_login: check_path: /login_check login_path: /login logout: true security: true anonymous: true access_control: - { path: /admin/.*, role: ROLE_ADMIN } - { path: /.*, role: IS_AUTHENTICATED_ANONYMOUSLY } 

рдЖрдЗрдП рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдПрдиреНрдХреЛрдбрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкрдиреА \ BlogBundle \ Entity \ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреИрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд╣рдо SymDony2 рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ MessageDigestPasswordEncoder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдПрдирдХреЛрдбрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред (рдиреЛрдЯ: MessageDigestPasswordEncoder рд╡рд░реНрдЧ рд╡рд┐рдХреНрд░реЗрддрд╛ / рд╕рд┐рдореНрдлрдиреА / src / Symfony / Component / Security / Core / Encoder рдкрд░ рд╕реНрдерд┐рдд рд╣реИред) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ sha512 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 10 рд░рди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ base64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдирдХреЛрдбрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВред

рдкреНрд░рджрд╛рддрд╛ рдЕрдиреБрднрд╛рдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХрд╣рд╛рдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рд╣рдордиреЗ рдбреЙрдХреНрдЯреНрд░рд┐рди рдПрдВрдЯрд┐рдЯреА рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛ рдЪреБрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдпреВрдирд┐рдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ред рдЕрдиреНрдп рдЕрдиреБрдордд рдкреНрд░рджрд╛рддрд╛ рдЗрди-рдореЗрдореЛрд░реА рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдЪреЗрди рдкреНрд░рджрд╛рддрд╛ рд╣реИрдВ , рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдХрд╛рдИ рд▓рд╛рдЗрди рдХреЛ рд╡рд░реНрдЧ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реА рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд░реНрдЧред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ BlogBundle рдмрдВрдбрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╣реИред

рд╕рд┐рдореНрдлрдиреА 2 рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ "рд╢реНрд░реЛрддрд╛" (рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ) рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ core.security рдШрдЯрдирд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред рдлрд╛рдпрд░рд╡реЙрд▓ рдЕрдиреБрднрд╛рдЧ рдорд╛рд░реНрдЧ рдХреЗ рдкреИрдЯрд░реНрди (рдЕрдВрдЧреНрд░реЗрдЬреА рдорд╛рд░реНрдЧреЛрдВ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ "рд╢реНрд░реЛрддрд╛рдУрдВ" (рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ) рдХреЛ рд▓рдЯрдХрд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдЬ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╕рднреА рдорд╛рд░реНрдЧреЛрдВ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХреНрд╕реЗрд╕ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП access_control рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╛рдпрд░рд╡реЙрд▓ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдкреИрдЯрд░реНрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдорд╛рд░реНрдЧреЛрдВ рдХреЛ "рд╕реБрдиреА" рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Form_login рдлрд╝реАрд▓реНрдб рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдлрд╝реЙрд░реНрдо рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░реЗрдЧрд╛ред рдЕрдиреНрдп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВред Form_login рдХреЗ рдЕрдВрджрд░ , рд╣рдордиреЗ login_path (рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдо рдХрд╛ рд╕реНрдерд╛рди) рдФрд░ check_path (рдлрд╝реЙрд░реНрдо рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╕реНрдерд╛рди) рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, form_login рдореЗрдВ рдХрдИ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ access_control рд╣реИ ред рдЗрд╕рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдорд╛рд░реНрдЧ рдХреЗ рдкреИрдЯрд░реНрди рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "/ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ /" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП ROLE_ADMIN рднреВрдорд┐рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рднреА рдХреЗ рд▓рд┐рдП IS_AUTHENTICATED_ANONYMOUSLY рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (Symfony2 рдореЗрдВ, рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рднреВрдорд┐рдХрд╛ рд╕реМрдВрдкреА рдЧрдИ рд╣реИ)ред

рдЗрд╕рд▓рд┐рдП, рдЕрдм рдЬрдм рд╕реБрд░рдХреНрд╖рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЕрдкрдиреА рдЗрдХрд╛рдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕реЛрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ SecurityBundal рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдореЗрдВ UserInterface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рд░реЛрд▓ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд░реЛрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирдИ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЬреБрдбрд╝рдирд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде src / Company / BlogBundle / Entity рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд░реЛрд▓.рдлреИрдк рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

 namespace Company\BlogBundle\Entity; use Symfony\Component\Security\Core\Role\RoleInterface; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="role") */ class Role implements RoleInterface { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") * * @var integer $id */ protected $id; /** * @ORM\Column(type="string", length="255") * * @var string $name */ protected $name; /** * @ORM\Column(type="datetime", name="created_at") * * @var DateTime $createdAt */ protected $createdAt; /** *   id. * * @return integer The id. */ public function getId() { return $this->id; } /** *    . * * @return string The name. */ public function getName() { return $this->name; } /** *    . * * @param string $value The name. */ public function setName($value) { $this->name = $value; } /** *     . * * @return DateTime A DateTime object. */ public function getCreatedAt() { return $this->createdAt; } /** *   */ public function __construct() { $this->createdAt = new \DateTime(); } /** *  ,   RoleInterface. * * @return string The role. */ public function getRole() { return $this->getName(); } } 

рднреВрдорд┐рдХрд╛ рдХрд╛ рд╕рд╛рд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЗрд╕рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ - рдирд╛рдо , рдЬрд┐рд╕рдореЗрдВ рднреВрдорд┐рдХрд╛ рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдХреНрд▓рд╛рд╕ рдЧреЗрдЯ рд░реЛрд▓ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЛрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рднреВрдорд┐рдХрд╛ рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИред рдЕрдм, рд░реЛрд▓ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдХреЛ рдЯреНрд╡рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реЗ User.php рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ
src / Company / BlogBundle / Entity рдФрд░ рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓реЗрдВ:

 namespace Company\BlogBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\UserInterface; /** * @ORM\Entity * @ORM\Table(name="user") */ class User implements UserInterface { // ... /** * @ORM\Column(type="string", length="255") * * @var string username */ protected $username; /** * @ORM\Column(type="string", length="255") * * @var string password */ protected $password; /** * @ORM\Column(type="string", length="255") * * @var string salt */ protected $salt; /** * @ORM\ManyToMany(targetEntity="Role") * @ORM\JoinTable(name="user_role", * joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")} * ) * * @var ArrayCollection $userRoles */ protected $userRoles; // ... /** *    . * * @return string The username. */ public function getUsername() { return $this->username; } /** *    . * * @param string $value The username. */ public function setUsername($value) { $this->username = $value; } /** *   . * * @return string The password. */ public function getPassword() { return $this->password; } /** *   . * * @param string $value The password. */ public function setPassword($value) { $this->password = $value; } /** *     . * * @return string The salt. */ public function getSalt() { return $this->salt; } /** *     . * * @param string $value The salt. */ public function setSalt($value) { $this->salt = $value; } /** *    . * * @return ArrayCollection A Doctrine ArrayCollection */ public function getUserRoles() { return $this->userRoles; } /** *   User */ public function __construct() { $this->posts = new ArrayCollection(); $this->userRoles = new ArrayCollection(); $this->createdAt = new \DateTime(); } /** *   . */ public function eraseCredentials() { } /** *    . * * @return array An array of Role objects */ public function getRoles() { return $this->getUserRoles()->toArray(); } /** *        *       . * * @param UserInterface $user The user * @return boolean True if equal, false othwerwise. */ public function equals(UserInterface $user) { return md5($this->getUsername()) == md5($user->getUsername()); } // ... } 

рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд╕ UserInterface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рднреВрдорд┐рдХрд╛ рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рдХрдИ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рдПрдХ AdvancedUserInterface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдЖрдкрдХреЛ рдЬреБрдбрд╝рдирд╛рд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред FixtureLoader.php рдлрд╝рд╛рдЗрд▓ рдХреЛ src / Company / BlogBundle / DataFixtures / ORM рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

 namespace Company\BlogBundle\DataFixtures\ORM; use Doctrine\Common\DataFixtures\FixtureInterface; use Company\BlogBundle\Entity\Category; use Company\BlogBundle\Entity\Post; use Company\BlogBundle\Entity\Tag; use Company\BlogBundle\Entity\User; use Company\BlogBundle\Entity\Role; use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder; class FixtureLoader implements FixtureInterface { public function load($manager) { //   ROLE_ADMIN $role = new Role(); $role->setName('ROLE_ADMIN'); $manager->persist($role); //   $user = new User(); $user->setFirstName('John'); $user->setLastName('Doe'); $user->setEmail('john@example.com'); $user->setUsername('john.doe'); $user->setSalt(md5(time())); //      , //       $encoder = new MessageDigestPasswordEncoder('sha512', true, 10); $password = $encoder->encodePassword('admin', $user->getSalt()); $user->setPassword($password); $user->getUserRoles()->add($role); $manager->persist($user); // ... } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирдИ рднреВрдорд┐рдХрд╛ ROLE_ADMIN рдирд╛рдо рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдереАред John.doe рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдордирдорд╛рдирд╛ рдкрд╛рд╕рд╡рд░реНрдб рдирдордХ рд╡рд╛рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛.рдЪреЗрдВрдЬрд░реНрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдордиреЗ MessageDigestPasswordEnccoder рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдкреЗрдиреЛрдбрд░реНрд╕ , рдлрд┐рд░ рдкрд╛рд╕рд╡рд░реНрдб "рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ" рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдирдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдкрд╛рд╕рд╡рд░реНрдб рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╣рдо рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдирдП рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрдИ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

 php app/console doctrine:schema:update --force 


рдЕрдЧрд▓рд╛, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрджреНрдпрддрди рдЬреБрдбрд╝рдирд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

 php app/console doctrine:data:load 

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдордиреЗ рдЗрдХрд╛рдЗрдпрд╛рдВ, рдбреЗрдЯрд╛ рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рдЖрдЗрдП рд▓реЙрдЧрд┐рди рдлреЙрд░реНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдХрдИ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдПрдВред Src / Company / BlogBundle / Resources / config directory рд╕реЗ routing.yml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ:

 _security_login: pattern: /login defaults: { _controller: BlogBundle:Security:login } _security_check: pattern: /login_check _security_logout: pattern: /logout admin_home: pattern: /admin/ defaults: { _controller: BlogBundle:Admin:index } 

рдЗрд╕ рддрд░рд╣, рд╣рдордиреЗ рдХрдИ рд╡рд┐рд╢реЗрд╖ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рджреЛ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдерд╛, рдЬреЛ рдПрдХ core.security рдШрдЯрдирд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЗрди рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ _security_check рдФрд░ _security_logout рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ admin_home рд░реВрдЯ рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдбрдорд┐рди рд╕реЗрдХреНрд╢рди рдХрд╛ рдореБрдЦреНрдп рдкреЗрдЬ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ Security.access_control рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдХреЗрд╡рд▓ ROLE_ADMIN рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "/ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ /" рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП admin_home рдорд╛рд░реНрдЧ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдЬрд▓реНрдж рд╣реА рд╣рдо рдЗрд╕реЗ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рд╣рдореЗрдВ рджреЛ рдирдП рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - SecurityController рдФрд░ AdminController , рддреЛ рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░реЗрдВред Src / Company / BlogBundle / рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо AdminController.php рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:

 namespace Company\BlogBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class AdminController extends Controller { public function indexAction() { return $this->render('BlogBundle:Admin:index.html.twig'); } } 

рд╕рд╛рдзрд╛рд░рдг рд╕реЗ рдмрд╛рд╣рд░ рдХреБрдЫ рднреА рдирд╣реАрдВред рдмрд╕ index.html.twig рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдм рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, src / Company / BlogBunde / Resources / views рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ index.html.twig рдлрд╝рд╛рдЗрд▓ - рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВред

 {% extends "BlogBundle::layout.html.twig" %} {% block title %} symfony2  |  |  {% endblock %} {% block content %} <h2>     , {{ app.user.username }}! </h2> {% endblock %} 

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ app.user рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЙрдЧ рдХрд┐рдП рдЧрдП рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡реИрд░рд┐рдПрдмрд▓ app.user рдХреНрд▓рд╛рд╕ рдХрдВрдкрдиреА \ BlogBundle \ Entity \ User рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреГрд╖реНрда рд╣реИрдВ, рддреЛ рдПрдХ SecurityController рдмрдирд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде src / Company / BlogBundle / рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ SecurityController.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

 namespace Company\BlogBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Security\Core\SecurityContext; class SecurityController extends Controller { public function loginAction() { if ($this->get('request')->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { $error = $this->get('request')->attributes->get(SecurityContext::AUTHENTICATION_ERROR); } else { $error = $this->get('request')->getSession()->get(SecurityContext::AUTHENTICATION_ERROR); } return $this->render('BlogBundle:Security:login.html.twig', array( 'last_username' => $this->get('request')->getSession()->get(SecurityContext::LAST_USERNAME), 'error' => $error )); } } 

рд╣рдордиреЗ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓реЙрдЧрд┐рди рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ _security_login рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрдВрджрд░, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ login.html.twig рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдПрдХ рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдХреИрд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реБрдП - рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рддред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдореЗрдВ рдПрдХ рдлреЗрдВрдХрд╛ рд╣реБрдЖ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИред

рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдореЗрдВ _username рдФрд░ _password рдлрд╝реАрд▓реНрдбреНрд╕ рд╣реЛрдВ , рдФрд░ _security_check рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП рднреА рдмрд╛рдзреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ src / Company / BlogBunde / Resources / views рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдХрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрджрд▓реЗ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде login.html.twig рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ:

 {% extends "BlogBundle::layout.html.twig" %} {% block title %} symfony2  |  {% endblock %} {% block content %} {% if error %} <div class="error">{{ error.message }}</div> {% endif %} <form action="{{ path('_security_check') }}" method="POST"> <table> <tr> <td> <label for="username">:</label> </td> <td> <input type="text" id="username" name="_username" value="{{ last_username }}" /> </td> </tr> <tr> <td> <label for="password">:</label> </td> <td> <input type="password" id="password" name="_password" /> </td> </tr> </table> <input type="submit" name="login" value="" /> </form> {% endblock %} 

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлреЙрд░реНрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╕рдордп _security_check рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде, рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдЧрд╛ред рд╕рдлрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореВрд▓ рдкрддреЗ рдкрд░ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛, рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдо рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдкрд░ред

рдЕрдм рдПрдХ рдПрдЧреНрдЬрд┐рдЯ рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рд▓реЙрдЧ-рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Src / Company / BlogBundle / Resources / views рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓реЗрдЖрдЙрдЯ . html.twig рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

 // ... {% block body %} <div id="container"> <header class="clearfix"> <h1> symfony2  </h1> <nav> <ul> <li> <a href="{{ path('show_page', { 'page' : 'about' }) }}">   </a> </li> {% if is_granted('IS_AUTHENTICATED_FULLY') %} <li> <a href="{{ path('_security_logout') }}">  </a> </li> {% endif %} </ul> </nav> </header> // ... 

рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╣рдиреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ IS_AUTHENTICATED_FULLY рднреВрдорд┐рдХрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднреВрдорд┐рдХрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдпрд╣ рднреВрдорд┐рдХрд╛ рд╣реИ, рддреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдиреВ рдореЗрдВ рдКрдкрд░ рдирд┐рд░реНрдорд┐рдд _security_logout рдорд╛рд░реНрдЧ рдХрд╛ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред

рдЕрдм, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдкреГрд╖реНрда рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рд╣реИ:

 php app/console cache:clear 

рдЕрдм "/ admin /" рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдкрдХреЛ рдПрдХ рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдо рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ):



рд▓реЙрдЧрд┐рди рдлрд╝реАрд▓реНрдб рдореЗрдВ john.doe рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрд░реЗрдВ ред рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ):



рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдореЗрдиреВ рдореЗрдВ, "рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ" рд▓рд┐рдВрдХ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЙрд╕реА рд╕рдордп рд╣рдо рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░реЗрдВрдЧреЗред рдУрд╣! рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ! рдФрд░ рдореЗрд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд┐рдпрд╛ рд╣реИ! рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рд░реНрдЧ рдЙрдкрд╕рд░реНрдЧ рд╣реИ (рд▓рдЧрднрдЧред - "/ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ / *")ред рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ FOSUserBundle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рдмрдирд╛рдпрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреБрдЫ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ


рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреЛрдЯ рдХреБрдХрдмреБрдХ рдХреЗ рд▓реЗрдЦ рд╣реИрдВ: рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд▓рд┐рд╕реНрдЯ (рдПрд╕реАрдПрд▓) рдФрд░ рдЙрдиреНрдирдд рдПрд╕реАрдПрд▓ рдХреЙрдиреНрд╕реЗрдкреНрдЯ ред

рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП Symfony2 рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдерд╛ рдпрд╛ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА Symfony2.0 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдВрдХ (рдЕрдзрд┐рдорд╛рдирддрдГ рд░реВрдкрд░реЗрдЦрд╛ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд▓рд┐рдЦреЗ рдЧрдП)ред рд╣рдо рдПрдХ рд╕рд╛рде рд╕рд┐рдореНрдлрдиреА рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣рдмрдмреНрд▓реЙрдЧ рдХреА рд░реЗрдЯрд┐рдВрдЧ рдмрдврд╝рд╛рдПрдВрдЧреЗ!

рдЕрдиреБрд╡рд╛рдж рдкрд░ рд╣реА рд╢рд┐рдХрд╛рдпрддреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рдкреБрд╕реНрддрдХ рдпрд╣рд╛рдБ рд╣реИ - рдкреНрд▓реЗрд╕реЗрдЧ ред рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреА!

Source: https://habr.com/ru/post/In128159/


All Articles