我對Rails很新,所以我可能錯過了一些顯而易見的事情,但是我非常難以讓bcrypt的has_secure_password
工作。Rails和BCrypt的問題has_secure_password
我正在嘗試通過來自React前端的axios AJAX調用來註冊用戶。數據正確傳入並且我沒有任何CORS問題,因爲當我刪除has_secure_password
行(並且在所有適用的位置用:password_digest
替換:password
)時,用戶被輸入數據庫 - 只是沒有加密密碼。我已經通過一堆以前的問題排序& 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)
(儘管最後一行的樂觀,用戶沒有輸入到數據庫另外,注意失蹤在第3行)下半年password
信息
這裏是我的用戶模型:
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
列在我的表中。任何幫助診斷錯誤將非常感激。
感謝您的閱讀!
編輯補充:
在Ruby控制檯創建用戶正常工作
嘗試轉到Rails控制檯並使用user = User.create在那裏創建一個新用戶。如果失敗,請鍵入user.errors.full_messages以查看失敗的位置。 – DevJem
@Dithanial在rails控制檯中創建它實際上沒有問題。仍然不支持AJAX調用。我用'user.errors.full_messages'更新了控制器的錯誤響應,而不是'有錯誤',並且得到了「密碼不能爲空」。 – JSilv
BCrypt需要密碼確認嗎? –