Разработка пользовательской аутентификации без пароля

#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 ты нашел решение?