0

「パスワードを忘れた」機能を実行しようとしています。私の問題は、Doctrine クエリを実行してパスワードを電子メールに送信しようとすると、暗号化されたパスワードが取得されることです。DoctrineGuard にはこの機能がなく、登録とログインの機能しかない Web をいくつか見ています。

本当ですか?

この場合、パスワードを記憶する機能をどのように行うことができますか?

ありがとう

4

3 に答える 3

3

バージョン 5.0.0 から、偉大な sfDoctrineGuard-Plugin にはパスワード忘れモジュールが組み込まれています。しかし、対応する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. メール送信を有効にします( prod/dev 環境factories.ymlの違いに注意してください。公式ドキュメントも参照してください):

    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 と factory.yml のアドレスは同じでなければなりません。そうしないと、smtp-server がエラーを出す可能性があります:

     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ます。

今すぐパスワードを忘れてください。

于 2012-03-30T13:37:38.327 に答える
1

パスワードはハッシュ化されてからデータベースに保存されるため、保存されたパスワードを回復することはできません。

「パスワード紛失」機能を作成するには、いくつかの方法があります。

  • 新しいパスワードを電子メールで送信します (あまり安全ではありませんが、気に入ってくれる人もいます)
  • パスワードのリセット リンク (および一意のトークン) を含む電子メールをユーザーに送信します。これにより、ユーザーに新しいパスワードが与えられるか、ユーザーが新しいパスワードを入力できるようになります。
于 2010-04-26T17:59:00.790 に答える
0

正しく読んだことを思い出すと、sfDoctrineGuard には必要なことを行う "getPassword" メソッドがありません... 暗号化されていないパスワードを取得します。

私は DuoSRX の最初の推奨事項を使用しています。新しいパスワードを作成し、$user->setPassword (ソルティングとハッシュを自動的に処理します) で保存し、ユーザーにメールで送信します。次に、ユーザーはログインして新しいパスワードを作成するように勧められます。

于 2010-04-26T22:50:54.950 に答える