2017-01-12 3 views
0

Я создаю приложение, которое использует Devise для управления пользовательским состоянием. Я также построение API в том же приложении, которое получает имя пользователя и пароль из запроса POSTИспользование модуля Devise/DatabaseAuthenticatable для проверки пароля/соли строки

То, что я пытаюсь выполнить:

  • Получить пользователь по имени пользователя из базы данных (сделан , прямые)
  • Используйте Devise::Models::DatabaseAuthenticatable взять пароль пользователя, переданный в, зашифровать его, сравнить его против encrypted_password полей на модели пользователя, и если они одинаковы, приступить к остальной части моего кода

Второй бул пусть выше, с чем я столкнулся. В консоли я не могу получить экземпляр модуля Devise::Models::DatabaseAuthenticatable, чтобы попробовать различные методы экземпляров, которые вы можете найти здесь, в docs.

Любая помощь была бы принята с благодарностью!

ответ

0

Если я правильно понял ваш вопрос, вы можете использовать метод разработки .valid_password?. Нечто подобное:

#assuming you'll receive nested params like user[email], user[password]... 
user_params = params.require(:user).permit(:email, :password) 

user = User.find_by(email: user_params[:email]) 
return head 403 if user.nil? 
valid = user.valid_password?(user_params[:password]) #true or false... 
return head 403 unless valid 

sign_in(user) #devise helper: if you want to sign in that user 

Вы также можете проверить еще approachs, как devise token auth камень.

+0

А, так просто. Спасибо, mrlew –

Смежные вопросы