Как аутентифицировать otp, введенный пользователем из браузера в базу данных? - PullRequest
0 голосов
/ 23 октября 2018

Я работаю над приложением OTP signin rails. Я использовал активную модель otp gem для генерации otp. Этот камень создает столбец otp_secret_key для хранения otp.Приложение отправляет OTP по почте пользователю. Затем пользователь должен ввести адрес электронной почты и исправить otp для входа (сеанс должен быть создан). Я застрял на части создания сеанса. Код для сеанса следующий:


     def create
        user = User.find_by(email: params[:session][:email])
        otp = params[:session][:otp_code]
        if user.authenticate_otp(otp)
           session[:user_id] = user.id
           flash[:success] = 'Successfully logged in'
           redirect_to welcome_home_path
        else
           flash.now[:danger] = 'Something wrong with your login information!'
        end
    end

Параметры, представленные в хэше params после отправки формы:


     Parameters: {"utf8"=>"✓", "session"=>{"email"=>"test23@example.com", "otp_code"=>"8496"}, "commit"=>"Login"}

Но в браузере он застревает на той же странице, а в терминале он показывает No template found for SessionsController#create, rendering head :no_content Но яхочу перенаправить его на начальный / домашний путь, если введенные значения верны.

Как это сделать?

PS: у меня есть таблица пользователей со столбцами user_id, user_email и otp_secret_key. Заранее спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

Оказывается, что в активном otp gem otp для конкретного пользователя действует только в течение 30 секунд.Из-за этого, если я аутентифицировал пользователя сразу, он работал.Однако через 30 секунд он показывался как «неверная информация для входа».Поэтому я использовал drift:, чтобы увеличить время действия OTP.

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