2016-03-23 8 views
0

Symfony v2.6.13とFOSUserBundleを使用しています。FOSUserBundle電子メールリセットリンクが正しいページに移動しない

私は自分のプロジェクトでユーザー認証を実装するためにFOSUserBundleを使用しています。自分のテンプレート(小枝)を使用して、login/register/resetのパスワードなどを表示します(テンプレートをオーバーライドすることで同じファイル名をProject/app/Resources/FOSUserBundle/viewsフォルダに配置します)。 https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html

私が直面している問題は、パスワードをリセットするために電子メールで受け取ったリンクが、当初のメール/ユーザー名を入力する画面と同じページに戻ります。メールの中に生成されたリンクは、パスワードを変更するための2つのテキストボックスを持つ画面に私を連れていくはずですが、このページは表示されません。

なぜこのようなことが起こっているのでしょうか。

fos_user: 
    db_driver: mongodb # other valid values are 'orm' mongodb', 'couchdb' and 'propel' 
    firewall_name: main 
    user_class: AppBundle\Document\User 
    registration: 
     form: 
      # using this because I am running Symfony 2.6 
      type: app_user_registration 
    resetting: 
     token_ttl: 0 # no restrictions on resetting password 
     email: 
      from_email: 
       address:  [email protected] 
       sender_name: SenderName 
    service: 
     #default implementation, and uses Swiftmailer to send emails. 
     mailer: fos_user.mailer.default 

config.ymlだからメールにはこのようなリセットのリンクを生成します:

http://127.0.0.1:8000/resetting/reset/59wonV9cK7UPR122rhNZQAXMJwoXUz7dt23_O-a4aJ4

(注:ローカルマシン上でテスト)。

その後だけ私にパスワードをリセットするために自分のユーザー名やメールアドレスを入力するためのオプションを与える画面(すなわち、同じ画面がループ)さ
http://127.0.0.1:8000/resetting/reset 

:私は、リンクをクリックすると

それは私を取ります。

ご協力いただければ幸いです。

編集:私は私自身のルートのFOSUserBundleや注釈によって提供されたルートを使用してい

アプリ/設定/ routing.ymlファイル:彼らはFOSUserBundleからすべてのデフォルトです:

fos_user_security_login   GET|POST ANY ANY /login        
fos_user_security_check   POST  ANY ANY /login_check      
fos_user_security_logout   GET  ANY ANY /logout       
fos_user_profile_show    GET  ANY ANY /profile/       
fos_user_profile_edit    GET|POST ANY ANY /profile/edit      
fos_user_registration_register GET|POST ANY ANY /register/       
fos_user_registration_check_email GET  ANY ANY /register/check-email    
fos_user_registration_confirm  GET  ANY ANY /register/confirm/{token}   
fos_user_registration_confirmed GET  ANY ANY /register/confirmed    
fos_user_resetting_request  GET  ANY ANY /resetting/request     
fos_user_resetting_send_email  POST  ANY ANY /resetting/send-email    
fos_user_resetting_check_email GET  ANY ANY /resetting/check-email    
fos_user_resetting_reset   GET|POST ANY ANY /resetting/reset/{token}   
fos_user_change_password   GET|POST ANY ANY /profile/change-password 
+0

ログイン/リセット関連のルートにrouting.ymlを表示できますか。 – Twifty

+0

私は自分のルートにFOSUserBundleと注釈によって提供されるルートを使用しています。 アプリ/設定/ routing.ymlファイル: 'app_website: リソース: "@ AppBundle /リソース/設定/ routing.ymlファイル" 接頭辞:/ アプリ: リソース: "@ AppBundle /コントローラー/" タイプ:注釈 fos_user: リソース: "@FOSUserBundle/Resources/config/routing/all。xml "' 読みにくいですが、私はオリジナルの投稿を編集しました@Twifty – Brendan

答えて

2

問題:私のルートをチェック(デバッグ$ phpのアプリ/コンソールルート)

app_website: 
    resource: "@AppBundle/Resources/config/routing.yml" 
    prefix: /
app: 
    resource: "@AppBundle/Controller/" 
    type:  annotation 
fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 

token_ttlが0に設定されていたため、トークンがすぐに期限切れになったため、ユーザーは決してパスワードをリセットできませんでした。私は最初FOSUserBundleを使って '24時間に1度しかパスワードをリセットしない'ことを回避するためにこれを0に設定しましたが、これは間違っていました。

この行を削除すると、問題が解決しました。

関連する問題