Compréhension du système d'authentification
Bonsoir,
J'ouvre ce topic car je me pose pas mal de questions théoriques quant au processus de traitement des formulaires de login.
J'ai crée 2 entités, User et Role, héritant de leurs interfaces respective.
L'étape suivante et de toucher aux fichier security.yml, et là, j'avoue que je m'en sert un peu sans vraiment comprendre le fonctionnement.
Prenons l'exemple d'une identification basée sur table (User et Role):
routing.yml
Code:
1 2 3 4 5 6
| login:
pattern: /login
defaults: { _controller: ProjExempleBundle:Security:login }
check:
pattern: /login_check |
security.yml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
security:
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: sha512
encode-as-base64: true
iterations: 10
providers:
main:
entity: { class:ProjExempleBundle:User, property: login }
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 } |
Je ne vais pas vous afficher le formulaire de login ce ne serait pas très intéressant, mais il faut savoir qu'il pointe vers la route "check".
Une fois que le firewall a récupérer le formulaire, pour traiter le résultat, va t-il utiliser le "encoders" ? Si oui
1] Comment sait-il qu'il soit l'appliquer seulement sur le password (comment identifie t-il se champ du formulaire ? Et de l'entité, grâce à l'interface je suppose ?)
2] Si on a applique un 'salt' au pass avant de l'entrer en base, par exemple:
Code:
$user->setSalt(md5(time()));
Comment Symfony2 va pouvoir matcher avec le pass entré en base, ce dernier étant base sur un cryptage en rapport à un instant t ??
Merci à la personne qui saura m'apporter ces précieuses explications !