簡體   English   中英

手動更改設計密碼

[英]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

更改后不會登錄

你不需要以這種方式設置密碼,只需設置密碼和密碼確認和設計即可完成剩下的工作,不用擔心,它不會以純文本形式存儲,設計會自動轉換為純文本在將其保存到數據庫之前將其轉換為哈希密碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM