Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP9+Symfony] nie zahashowane hasło
Forum PHP.pl > Forum > PHP
dopelganger
cześć

kiedy edytuje w cmsie (CRUD) użytkownika: hasło zapisuje do bazy nie zahashowane :/

a w pliku security.yml mam:

  1. security:
  2. encoders:
  3. FOS\UserBundle\Model\UserInterface: sha512


na stronie -edycja profilu- zapisuje prawidłowo.

Prosze o pomoc.
Forti
Pokaż kod akcji w controller smile.gif Musisz hasło kodować używając odpowiedniego komponentu w symfony. Samo nigdy nic się nie dzieje.
dopelganger
Cytat(Forti @ 29.12.2015, 10:30:33 ) *
Pokaż kod akcji w controller smile.gif Musisz hasło kodować używając odpowiedniego komponentu w symfony. Samo nigdy nic się nie dzieje.


  1. /**
  2.   * Displays a form to edit an existing User entity.
  3.   *
  4.   * @Route("/{id}/edit", name="backend_cms_users_edit")
  5.   * @Method("GET")
  6.   * @Template()
  7.   */
  8. public function editAction($id)
  9. {
  10. $em = $this->getDoctrine()->getManager();
  11.  
  12. $entity = $em->getRepository('UserBundle:User')->find($id);
  13.  
  14. if (!$entity) {
  15. throw $this->createNotFoundException('Unable to find User entity.');
  16. }
  17.  
  18. $editForm = $this->createEditForm($entity);
  19. $deleteForm = $this->createDeleteForm($id);
  20.  
  21. return array(
  22. 'entity' => $entity,
  23. 'edit_form' => $editForm->createView(),
  24. 'delete_form' => $deleteForm->createView(),
  25. );
  26. }
  27.  
  28. /**
  29.   * Creates a form to edit a User entity.
  30.   *
  31.   * @param User $entity The entity
  32.   *
  33.   * @return \Symfony\Component\Form\Form The form
  34.   */
  35. private function createEditForm(User $entity)
  36. {
  37. $form = $this->createForm(new UserType(), $entity, array(
  38. 'action' => $this->generateUrl('backend_cms_users_update', array('id' => $entity->getId())),
  39. 'method' => 'PUT',
  40. ));
  41.  
  42. $form->add('submit', 'submit', array('label' => 'ZAPISZ'));
  43.  
  44. return $form;
  45. }
  46. /**
  47.   * Edits an existing User entity.
  48.   *
  49.   * @Route("/{id}", name="backend_cms_users_update")
  50.   * @Method("PUT")
  51.   * @Template("UserBundle:User:edit.html.twig")
  52.   */
  53. public function updateAction(Request $request, $id)
  54. {
  55. $em = $this->getDoctrine()->getManager();
  56.  
  57. $entity = $em->getRepository('UserBundle:User')->find($id);
  58.  
  59. if (!$entity) {
  60. throw $this->createNotFoundException('Unable to find User entity.');
  61. }
  62.  
  63. $deleteForm = $this->createDeleteForm($id);
  64. $editForm = $this->createEditForm($entity);
  65. $editForm->handleRequest($request);
  66.  
  67. if ($editForm->isValid()) {
  68. $em->flush();
  69.  
  70. return $this->redirect($this->generateUrl('backend_cms_users_edit', array('id' => $id)));
  71. }
  72.  
  73. return array(
  74. 'entity' => $entity,
  75. 'edit_form' => $editForm->createView(),
  76. 'delete_form' => $deleteForm->createView(),
  77. );
  78. }
Forti
No to przecież masz przyczyne... Hasło nie jest zakodowane ponieważ nigdzie go nie kodujesz.

  1. $encoder = $this->get('security.encoder_factory')->getEncoder($user);
  2. $encodedPass = $encoder->encodePassword($password, $user->getSalt());


dopelganger
Cytat(Forti @ 29.12.2015, 13:21:16 ) *
No to przecież masz przyczyne... Hasło nie jest zakodowane ponieważ nigdzie go nie kodujesz.

  1. $encoder = $this->get('security.encoder_factory')->getEncoder($user);
  2. $encodedPass = $encoder->encodePassword($password, $user->getSalt());


hmm, dalej nic, "błąd serwera" , zapisałem coś takiego:

  1. $plainTextPassword = $this->get('request')->request->get('password');
  2. $user = new Test\UserBundle\Entity\User;
  3. $encoder = $this->get('security.encoder_factory')->getEncoder($user);
  4. $encodedPass = $encoder->encodePassword($plainTextPassword, $user->getSalt());

Forti
Jaki konkretnie błąd?
Zaglądałeś wogóle w dokumentacje?

http://symfony.com/blog/new-in-symfony-2-6...ssword-encoding
dopelganger
Cytat(Forti @ 29.12.2015, 13:48:17 ) *
Jaki konkretnie błąd?
Zaglądałeś wogóle w dokumentacje?

http://symfony.com/blog/new-in-symfony-2-6...ssword-encoding


no własnie skopiowałem to z dokumentacji ...

a błąd:
"Błąd serwera

Wystąpił błąd podczas pobierania http://...web/app_dev.php/cms/users/24 przez witrynę. Zasób jest niedostępny z powodu przeprowadzanej konserwacji lub nieprawidłowej konfiguracji.
Odśwież tę stronę.

Naciśnij przycisk odświeżania, aby ponownie wysłać dane niezbędne do wczytania strony."


dobra udąło mi sie to sklecić, wklejam gdyby ktoś kiedyś potrzebował smile.gif


  1. $user = new User();
  2. $user= $editForm->getData();
  3. $pwd=$user->getPassword();
  4. $encoder=$this->container->get('security.password_encoder');
  5. $pwd=$encoder->encodePassword($user, $pwd);
  6. $user->setPassword($pwd);



zamykamy temat
Forti
Nie sądzisz że to jest bezsensu? smile.gif

  1. $user = new User();
  2. $user = $editForm->getData();


najpierw tworzysz Form do którego przypisujesz obiekt User(). Nie musisz go tworzyć drugi raz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.