sfDoctrineGuard вопрос - PullRequest
       9

sfDoctrineGuard вопрос

0 голосов
/ 26 апреля 2010

Я пытаюсь использовать функцию "я забыл свой пароль".Моя проблема в том, что если я пытаюсь выполнить запрос Doctrine и отправить пароль на электронную почту, он получает зашифрованный пароль.Я смотрю на некоторые веб-сайты, в которых DoctrineGuard не имеет этой функции и имеет только функции регистрации и входа в систему.

Это правда?

В таком случае, как я могу сделать функцию запоминания пароля?

спасибо

Ответы [ 3 ]

3 голосов
/ 30 марта 2012

Начиная с версии 5.0.0 отличный плагин sfDoctrineGuard имеет встроенный модуль забытого пароля. Но в соответствующем файле readme есть редкая информация о том, как его использовать:))

[TODO: document the forgot password feature]

Чтобы использовать функцию забытого пароля, сделайте следующее (при условии, что вы уже установили плагин и нормальный вход работает):

  1. включить модуль в settings.yml (и включить i18n при его использовании):

    all:
      .setting:
      enabled_modules: [default, sfGuardAuth, sfGuardForgotPassword]
      i18n: true
    
  2. добавить маршруты в routing.yml (автоматическое добавление у меня не сработало). И убедитесь, что вы включили правило @homepage, которое используется для перенаправления.

    sf_guard_forgot_password_change:
      url:   /forgot_password/:unique_key
      class: sfDoctrineRoute
      options: { model: sfGuardForgotPassword, type: object }
      param: { module: sfGuardForgotPassword, action: change }
      requirements:
        sf_method: [get, post]
    
    sf_guard_forgot_password:
      url:   /forgot_password
      param: { module: sfGuardForgotPassword, action: index }
    
  3. включить рассылку в factories.yml (остерегайтесь отличий для prod / dev env. . См. Также официальный документ. ):

    all:
      mailer:
        class: sfMailer
        param:
        logging:           %SF_LOGGING_ENABLED%
        charset:           %SF_CHARSET%
        delivery_strategy: realtime
        transport:
          class: Swift_SmtpTransport
          param:
            host:       smtp.example.com
            port:       25
            encryption: ~
            username:   test@example.com
            password:   p4ssw0rd
    
  4. добавить адрес отправителя к app.yml (и маршрутизация, которая не работает для меня автоматически). Адрес в app.yml и factories.yml должен быть одинаковым, в противном случае smtp-сервер может пожаловаться:

     all:
      sf_guard_plugin:
        routes_register: true
        default_from_email: test@example.com
    
  5. Нажмите от apps/your_app/modules/sfGuardForgotPassword/config/security.yml до , чтобы сделать форму запроса доступной при выходе из системы :

    secure:
      is_secure: true      
    index:
      is_secure: false       
    change:
      is_secure: false
    
  6. очистить кеш с помощью ./symfony cc.

Теперь забудьте свой пароль.

1 голос
/ 26 апреля 2010

Пароль хешируется и затем сохраняется в базе данных, поэтому вы не сможете восстановить пароль после того, как он был сохранен.

Существует несколько способов создать функцию «потерянный пароль»:

  • Отправить новый пароль по электронной почте (не совсем безопасно, но некоторым людям все равно нравится)
  • Отправьте пользователю электронное письмо со ссылкой для сброса пароля (и уникальным токеном), которая либо дает пользователю новый пароль, либо позволяет пользователю ввести новый пароль.
0 голосов
/ 27 апреля 2010

Если я не ошибаюсь, у sfDoctrineGuard нет метода «getPassword», который бы делал то, что ему нужно ... для получения пароля в незашифрованном виде.

Я использую первую рекомендацию DuoSRX: создать новый пароль, сохранить его с помощью $ user-> setPassword (который автоматически обрабатывает засолку и хэширование) и отправить его пользователю по электронной почте. Затем пользователю рекомендуется войти в систему и создать новый пароль.

...