Как я могу просто проверить правильность имени пользователя и пароля с помощью Devise и Rails 3 - PullRequest
33 голосов
/ 16 июля 2010

Я использую Devise и Rails 3.

Я хочу вызвать функцию, которая просто проверит правильность комбинации username и пароля пользователя без фактической регистрации этого пользователя.Есть ли способ, как я могу сделать что-то подобное с Devise:

User.authenticate(params[:username], params[:password])

Ответы [ 4 ]

62 голосов
/ 05 июня 2011

Получить пользователя из базы данных:

user = User.find_by_email(params[:email])

Затем вы можете проверить его пароль с помощью:

user.valid_password?(params[:password])
4 голосов
/ 27 января 2015

Или используя один вкладыш:

User.find_by_email(params[:email]).try(:valid_password?, params[:password])

, который возвращает true или nil

0 голосов
/ 05 февраля 2017

Официальный способ разработки

У Devise есть два встроенных метода , которые позволяют вам сделать именно это:

user = User.find_for_authentication(username: params[:username])
user.valid_password?(params[:password])
0 голосов
/ 17 июля 2010

Хорошо, Devise делает это автоматически: когда пользователь вводит данные для входа в систему, тогда он делает эту проверку для вас.

, если вы хотите больше контроля, тогда у вас есть 2 варианта:

1-посмотрите на источники в Devise, где можно найти эту проверку

2 - напишите свою собственную систему входа в систему (это не так сложно, как вы думаете)

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