0

パスワード認証用のデフォルトの everyauth セットアップでは、ログイン ページと登録ページは別個のものです。対応する jade ファイルをマージして、サーバー ファイル内の get/post register パスとログイン パスを同じになるように調整してみました。次に、マージされたページをロードすると、次のエラーが発生しました。

500 ReferenceError: /Users/eterna/Downloads/fame/views/index.jade:8 6| label(for=everyauth.password.loginFormFieldName) ログイン 7| input(type='text', name=everyauth.password.loginFormFieldName, value=userParams[everyauth.password.loginFormFieldName]) > 8| #メール 9| label(for=everyauth.password.emailFormFieldName) メール 10| input(type='text', name='email', value=userParams['email']) 11| #password userParams が定義されていません。

私は明らかにこれについて間違った方法で進んでいます。ログインと登録を同じページに置くための簡単な解決策はありますか?

4

1 に答える 1

0

デフォルト設定のコードを読むことを検討してください。コードを見なくても(投稿していないため)、ログイン用には存在しないuserParamsにアクセスしようとしているため、7行目でつまずいていることがエラーからわかりますが、登録用には存在します。userParams は、ユーザーがフィールドに入力した入力を保持しているように見えるため、登録エラーが発生した場合、ユーザーが既に入力したテキストがフォームに配置されます。(つまり、電子メール アドレスを入力してもパスワードが短すぎる場合、エラーが登録され、入力フィールドに電子メール アドレスが表示されます)。

登録とログインを組み合わせる最も簡単な方法は、クライアント側です。1) 1 つのフォームに 2 つの送信ボタン (登録とログイン) をページに配置することができます。ユーザーがクリックした内容に応じて、フォームはさまざまなエントリ ポイントに投稿されます。

2) 登録タブとログイン タブを作成し、登録をクリックすると登録フォームが表示され、ログイン タブをクリックすると別のフォームに切り替わります。

RespondToLoginFail をオーバーライドすることで、everyauth にこのロジックを実行させるパスをたどることができます。そのため、ユーザーのログインを試みて失敗すると、リクエストを再構築し、レジスタ パスへの post 呼び出しを行います。お勧めしませんが、動作させることは可能です。

于 2012-06-28T05:58:53.537 に答える