#ruby-on-rails #devise
#ruby-on-rails #разработка
Вопрос:
В моем приложении мне нужна аутентификация по базе данных, но без пароля. Просто введя свой номер телефона. Когда пользователь вводит номер телефона, адрес и имя, он не вводит пароль.
Это реально? Просто не могу понять, как это сделать.
Заранее спасибо за помощь!
Комментарии:
1. Аутентификация обычно достигается путем запроса у пользователя того, что известно только ему, или подтверждения того, что у него есть что-то уникальное для них. Номер телефона сам по себе этого не выполняет, но если бы это был номер мобильного телефона, вы могли бы отправить SMS-сообщение с кодом, который они должны использовать, чтобы подтвердить, что у них есть телефон?
2. Проверка подлинности Windows или аналогичная?
Ответ №1:
Понял так:
В инициализаторе devise_no_pass.rb добавьте:
require 'devise/strategies/authenticatable'
module Devise
module Strategies
class DeviseNoPass < Authenticatable
def authenticate!
return super unless params[:customer_sign_in]
customer = Customer.find_by_phone(params[:customer_sign_in]
customer ? success!(customer) : raise
end
end
end
end
Warden::Strategies.add(:devise_no_pass, Devise::Strategies::DeviseNoPass)
В devise.rb:
config.warden do |manager|
manager.default_strategies(:scope => :customer).unshift :devise_no_pass
end
Комментарии:
1. Можете ли вы поделиться своим кодом модели клиента в отношении devise … и маршрутами для этого, а также вашей формой входа? Я пытаюсь сделать что-то подобное, и это было бы полезно. Я хотел бы посмотреть, какие модули devise вы специально включили в модель
2. Извините, но у меня больше нет этого кода проекта. И я не могу вспомнить, что именно было в моей голове.
3. Эй, я тоже работаю над той же проблемой, но пока безуспешно. Мне нужно войти в систему без пароля, то есть войти только с именем пользователя. @Joel ты нашел решение?