Подтвердить что ты не робот

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

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

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

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

Ответ 1

Извлеките пользователя из базы данных:

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

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

user.valid_password?(params[:password])

Ответ 2

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

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

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

Ответ 3

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

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

user = User.find_for_authentication(username: params[:username])
user.valid_password?(params[:password])

Ответ 4

Ну, Devise делает это автоматически: когда пользователь сует информацию о входе, он делает это для вас.

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

1- посмотрите на источники, которые определяют, где он делает проверку

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