Ответ 1
Извлеките пользователя из базы данных:
user = User.find_by_email(params[:email])
Затем вы можете проверить свой пароль:
user.valid_password?(params[:password])
Я использую Devise
и Rails 3
.
Я хочу вызвать функцию, которая просто проверит, что пользовательская комбинация username
и пароль верны, без фактического входа в систему этого пользователя. Есть ли способ сделать что-то подобное с помощью Devise:
User.authenticate(params[:username], params[:password])
Извлеките пользователя из базы данных:
user = User.find_by_email(params[:email])
Затем вы можете проверить свой пароль:
user.valid_password?(params[:password])
Или используя один вкладыш:
User.find_by_email(params[:email]).try(:valid_password?, params[:password])
который возвращает true
или nil
У Devise есть два встроенные методы, которые позволяют делать именно это:
user = User.find_for_authentication(username: params[:username])
user.valid_password?(params[:password])
Ну, Devise делает это автоматически: когда пользователь сует информацию о входе, он делает это для вас.
если вы хотите большего контроля, тогда у вас есть 2 варианта:
1- посмотрите на источники, которые определяют, где он делает проверку
2- напишите свою собственную систему входа (это не так сложно, как вы думаете)