Объединение страниц входа и регистрации в Everyauth для Express.js

В настройках Everyauth по умолчанию для аутентификации по паролю страницы входа и регистрации различны. Я попытался объединить соответствующие jade-файлы и расположить регистр get/post и пути входа в мой серверный файл одинаково. Затем я загрузил объединенную страницу и получил следующую ошибку:

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| #email 9| label(for=everyauth.password.emailFormFieldName) Электронная почта 10| input(type='text', name='email', value=userParams['email']) 11| #password userParams не определен.

Я явно ошибаюсь в этом. Есть ли простое решение для размещения входа и регистрации на одной странице?

1 ответ

Попробуйте прочитать код для настройки по умолчанию. Не глядя на ваш код (потому что вы его не опубликовали), из ошибки видно, что он срабатывает по строке 7, потому что вы пытаетесь получить доступ к userParams, который не существует для входа в систему, но он существует для регистрации. Похоже, что userParams просто содержит данные, введенные пользователем в поля, поэтому при возникновении ошибки регистрации текст, введенный пользователем, помещается в форму. (т. е. если они вводят свой адрес электронной почты, но их пароль слишком короткий, регистрируйте ошибки и в поле ввода все равно будет указан адрес электронной почты)

Самый простой способ объединить регистрацию и вход в систему - на стороне клиента. Вы можете 1) иметь одну форму на странице с двумя кнопками отправки - зарегистрироваться и войти. В зависимости от того, что пользователь нажимает, форма отправляет сообщения в разные точки входа.

2) создать вкладки "Регистрация" и "Вход", чтобы при нажатии на кнопку "Регистрация" отображалась форма регистрации, а при нажатии на вкладку "Вход" она переключалась на другую форму.

Вы могли бы пойти по пути, заставляя Everyauth выполнять эту логику, переопределяя responseToLoginFail, поэтому, когда он пытается войти в систему и терпит неудачу, он перестраивает запрос и делает пост-вызов пути реестра. Я не рекомендовал бы это, но возможно заставить это работать.

Другие вопросы по тегам