Исключением для Devise является пароль, равный нулю - PullRequest
2 голосов
/ 17 апреля 2011

Я хочу, чтобы пользователи взаимодействовали с моим сайтом, не создавая учетную запись, а затем создавая учетную запись (введите пароль, имя, информация, и т. Д.), Если им нужно больше.

Это работает нормально, но если пользователь думал, что он создал учетную запись, а затем попытался войти (вероятно, используя пароль, который они используют постоянно), Devise будет через исключение:

BCrypt::Errors::InvalidHash in Devise/sessionsController#create

Потому что пароль ноль.Если они проходят регистрацию, а затем регистрируются снова, это работает.

Я использую devise (1.2.0), Rails (3.0.4) и Ruby 1.9.2

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

Есть ли что-нибудь, что я могу сделать / установить, чтобы обойти проблему?

1 Ответ

0 голосов
/ 17 апреля 2011

Возможно, самый простой способ - просто сгенерировать случайный файл, используя что-то вроде Devise.friendly_token[0..20], но вы также можете переопределить контроллер и метод Devise для входа в систему, восстановления исключения и просто перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...