手动更改设计密码
Change Devise Password Manually
好的,我有一个 API 是我为我们的客户服务团队打造的。我们可以创建帐户和用户,一切都很好。
但是当我构建它来更改用户密码时,它更改了密码但不会登录。
创建一个帐户我有这个编码:
def create
params["user"].delete("user_id") // this is being sent in from the api..
params["user"]["encrypted_password"] = Password.new(Password.create(params["user"]["password"]))
params["user"]["password"] = Password.new(Password.create(params["user"]["password"]))
user = User.create(params["user"])
if user
render json: {company: user}, status: 200
else
render json: {message: "Problem creating company"}, status: 500
end
end
效果很好
但是当我去更新一个用户时:
params["user"]["encrypted_password"] = Password.new(Password.create(password))
params["user"]["password"] = Password.new(Password.create(password))
无法正常工作
def update
user = User.find(params[:id])
password = params["user"].delete("user_password")
if password && !password.blank?
puts password
params["user"]["encrypted_password"] = Password.new(Password.create(password))
params["user"]["password"] = Password.new(Password.create(password))
end
if user.update_attributes(params["user"])
render json: {company: user}, status: 200
else
render json: {message: "Problem updating company"}, status: 500
end
end
更改后无法登录
你不需要那样设置密码,只需设置密码和密码确认,devise 会处理剩下的,别担心,它不会以明文形式存储,devise在将其保存到 db
之前自动将纯文本转换为散列密码
def update
user = User.find(params[:id])
password = params["user"].delete("user_password")
if password && !password.blank?
user.password = user.password_confirmation = password
end
if user.save
render json: {company: user}, status: 200
else
render json: {message: "Problem updating company"}, status: 500
end
end
好的,我有一个 API 是我为我们的客户服务团队打造的。我们可以创建帐户和用户,一切都很好。
但是当我构建它来更改用户密码时,它更改了密码但不会登录。
创建一个帐户我有这个编码:
def create
params["user"].delete("user_id") // this is being sent in from the api..
params["user"]["encrypted_password"] = Password.new(Password.create(params["user"]["password"]))
params["user"]["password"] = Password.new(Password.create(params["user"]["password"]))
user = User.create(params["user"])
if user
render json: {company: user}, status: 200
else
render json: {message: "Problem creating company"}, status: 500
end
end
效果很好
但是当我去更新一个用户时:
params["user"]["encrypted_password"] = Password.new(Password.create(password))
params["user"]["password"] = Password.new(Password.create(password))
无法正常工作
def update
user = User.find(params[:id])
password = params["user"].delete("user_password")
if password && !password.blank?
puts password
params["user"]["encrypted_password"] = Password.new(Password.create(password))
params["user"]["password"] = Password.new(Password.create(password))
end
if user.update_attributes(params["user"])
render json: {company: user}, status: 200
else
render json: {message: "Problem updating company"}, status: 500
end
end
更改后无法登录
你不需要那样设置密码,只需设置密码和密码确认,devise 会处理剩下的,别担心,它不会以明文形式存储,devise在将其保存到 db
之前自动将纯文本转换为散列密码def update
user = User.find(params[:id])
password = params["user"].delete("user_password")
if password && !password.blank?
user.password = user.password_confirmation = password
end
if user.save
render json: {company: user}, status: 200
else
render json: {message: "Problem updating company"}, status: 500
end
end