Вы можете использовать SecurityBundle для этого, например. см. пример ниже:
security.yml
encoders:
MyComapnyMysuperBundle\Entity\User:
algorithm: sha512
encode-as-base64: true
iterations: 10
providers:
main:
entity: { class: MyComapnyMysuperBundle: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 }
Вы можете использовать сущность доктрины в качестве обеспечения безопасности, например, схему yml сущности пользователя:
User.orm.yml
MyComapny\MysuperBundle\Entity\User:
type: entity
table: user
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
username:
type: string
length: 255
password:
type: string
length: 255
first_name:
type: string
length: 255
last_name:
type: string
length: 255
email:
type: string
length: 255
created_at:
type: datetime
salt:
type: string
length: 255
manyToMany:
userRoles:
targetEntity: Role
joinTable:
name: user_role
joinColumns:
user_id:
referencedColumnName: id
inverseJoinColumns:
role_id:
referencedColumnName: id
и роль субъекта:
Role.orm.yml
MyComapny\MysuperBundle\Entity\Role:
type: entity
table: role
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 255
created_at:
type: datetime
и пример routing.yml
login:
pattern: /login
defaults: { _controller: MyComapnyMysuperBundle:Security:login }
login_check:
pattern: /login_check
logout:
pattern: /logout
eTracker_home:
pattern: /admin/{name}
defaults: { _controller: MyComapnyMysuperBundle:Admin:index }