#ruby-on-rails #ruby #devise #omniauth
#ruby-on-rails #ruby #разработка #omniauth
Вопрос:
Я использую Devise для настройки аутентификации пользователя, но у меня возникают трудности с получением пользователей для входа.
Формы для входа и регистрации отображаются корректно. Проблема в том, что когда я нажимаю отправить, я получаю ошибку (маршрут не соответствует «/ sessions / user»). Если я захожу в форму регистрации, заполняю поля и отправляю, то я получаю ту же ошибку. Однако, когда я возвращаюсь к корневому URL (pages # home), пользователь входит в систему. Если я выхожу из системы и пытаюсь войти с теми же учетными данными пользователя, я получаю сообщение об ошибке no route matches, и пользователь вообще не входит в систему.
Я хотел бы исправить это, чтобы регистрация перенаправлялась на страницы # home, а пользователь выполнял вход из формы входа. Есть идеи?
Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация, и большое вам спасибо за вашу помощь!
Комментарии:
1. Какие версии Rails и Devise вы используете? Также вы можете опубликовать свой файл routes.rb?
2. Rails: 3.0.5, разработка 1.2.1, routes.rb min.us/mTTAspPGXiM8u#1 (не хватает представителя для публикации изображений) Примечание: соответствие ‘session / user’ закомментировано, но при раскомментировании я получаю ошибку ‘Не удалось найти отображение devise для пути «/ sessions / user»‘. Я ценю вашу мудрость в программировании!
3. Я немного запутался относительно цели сеанса и пользовательских путей, которые вы создаете. Вы пытаетесь перезаписать код разработки или просто пытаетесь добавить немного функциональности к этим методам? Если вам просто нужно добавить немного функциональности, я бы рекомендовал расширить существующие контроллеры, выполнить ваш код, а затем вызвать super, чтобы devise мог выполнить свою задачу. Также не уверен, какой эффект это будет иметь, но соглашение гласит, что в конце вашего файла routes должен быть root to ( guides.rubyonrails.org/routing.html#using-root ).
4. Я использую код rails 3 hartl в качестве фреймворка ( ruby.railstutorial.org/chapters / … ), в котором есть контроллер сеансов помощник (контроллер закомментирован, сохранены несколько вспомогательных функций). На данный момент не пытаюсь перезаписать devise, просто хочу авторизовать пользователей через него. я нахожу очень странным, что после регистрации новый пользователь входит в систему, но сама форма входа не выполняет вход пользователей. Пожалуйста, публикуйте любые другие предложения, которые у вас могут возникнуть, а я тем временем буду продолжать подключаться к ним, спасибо!
Ответ №1:
У меня был старый контроллер сеансов, я удалил его, перезапустил сервер. Затем я получил ошибку ‘BCrypt:: Errors:: InvalidHash в Devise / SessionsController #create’ при входе в систему, которая относится к пустому столбцу encrypted_password db. Я посмотрел на модель пользователя и прокомментировал attr_accessor: password и создал нового пользователя, encrypted_password для этого пользователя был сохранен, и вход теперь работает. Ура!!