Я довольно новичок в Rails, поэтому мне, вероятно, не хватает чего-то очевидного, но у меня очень тяжелое время, чтобы работать с has_secure_password
bcrypt.Проблема с Rails и BCrypt has_secure_password
Я пытаюсь зарегистрировать пользователей с помощью вызова AJAX с аксиом из интерфейса React. Данные передаются правильно, и у меня нет проблем с CORS, поскольку, когда я удаляю строку has_secure_password
(и заменяю :password
на :password_digest
во всех применимых местах), пользователь вводится в базу данных - просто без зашифрованного пароль. Я разобрал кучу предыдущих вопросов. & ответов на has_secure_password
& ничего не работает.
Вот что сервер выплевывает, когда я пытаюсь создать новый пользователь:.
1| Started POST "/api/users" for 127.0.0.1 at 2017-02-19 20:51:19 -0500
2| Processing by Api::UsersController#create as HTML
3| Parameters: {"name"=>"test", "username"=>"test25", "email"=>"[email protected]", "password"=>"[FILTERED]", "user"=>{"name"=>"test", "username"=>"test25", "email"=>"[email protected]"}}
4| (0.1ms) BEGIN
5| (0.1ms) ROLLBACK
6| Completed 200 OK in 11ms (Views: 0.3ms | ActiveRecord: 4.2ms)
(Несмотря на оптимизм этой последней строки, пользователь не вошел в базу данных Кроме того, обратите внимание, что не хватает password
информации во второй половине строки 3)
Вот моя модель пользователя:
class User < ApplicationRecord
has_secure_password
end
Я также попытался с помощью ActiveRecord::Base
в го е место ApplicationRecord
и добавив include ActiveModel::SecurePassword
туда же, ни один из которых ничего не сделал.
Вот мой создать контроллер пользователя (это своего рода беспорядок, так как я не 100% уверен, что я делаю):
def create
user = User.new(user_params)
if user.save
session[:user_id] = user.id
render json: { user: user }
else
render json: {error: "there was an error"}
end
end
private
def user_params
params.require(:user).permit(:name, :username, :email, :password)
end
вызов AJAX отправляет пароль в password: [password here]
и у меня есть :password_digest
столбец в моем столе. Любая помощь, диагностирующая ошибку, будет очень оценена.
Спасибо за чтение!
Edited добавить:
Создание пользователя в консоли рубинового работает отлично
Попробуйте перейти к консоли Rails и создать нового пользователя там с user = User.create. Когда это не удается, введите user.errors.full_messages, чтобы увидеть, где он сбой. – DevJem
@Dithanial. Создание на консоли rails не сработало, на самом деле. Все еще не работает с вызовом AJAX. Я обновил ответ об ошибке от контроллера с помощью 'user.errors.full_messages' вместо« произошла ошибка »и получил« Пароль не может быть пустым ». – JSilv
ли BCrypt требует подтверждения пароля? –