2011-10-20 6 views
0

パスワード認証のデフォルトのeveryauth設定では、ログインページと登録ページが異なります。私は、対応するjadeファイルをマージし、get/postの登録とログインパスを私のサーバーファイルに同じにするようにしました。次に、マージされたページをロードし、次のエラーが発生しました。express.jsのeveryauthでのログインページと登録ページのマージ

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

私は明らかにこれについて間違った方法を行っています。同じページにログインと登録を行うための簡単なソリューションはありますか?

答えて

0

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

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

レジスタと、ログインタブを作成2)ので、あなたが登録]をクリックすると、あなたは登録フォームが表示され、ログイン]タブをクリックしたとき、それは

あなたはeveryauthがやらせての道を行くことができる他の形式に切り替えこのロジックはrespondToLoginFailをオーバーライドすることでその人物をログインしようとすると失敗すると、リクエストを再作成してレジスタパスへのポストコールを行います。私はそれをお勧めしませんが、それを動作させることは可能です。

関連する問題