2012-09-26 81 views
3

我無法使用jQuery驗證檢查當前密碼。我正在使用Devise gem和jQuery驗證。螢火蟲說:如何檢查Rails中的當前密碼(Devise gem)?

的問題是在我的控制器:

def checkpass 
user = User.find_by_email(params[:user][:email]) 
respond_to do |format| 
if user && user.authenticate(params[:user][:password]) 
    format.json { render :json => @user } 
end 

與此代碼螢火蟲給我的錯誤checkemail獨特作用

406 Not Acceptable 

end 

例如:

def checkemail 
    @user = User.find_by_email(params[:user][:email]) 
    respond_to do |format| 
    format.json { render :json => [email protected] } 
    end 
end 

我的JS:

$("#edit_password").validate({ 
    "user[current_password]":{ 
      required: true, 
      minlength: 6, 
      remote: { 
      url: "http://127.0.0.1:3000/checkpass" 
      } 
... 
}) 

和HTML:

<input type="password" size="30" name="user[current_password]" id="user_current_password" class="valid"> 

有人建議可以怎麼辦呢?

控制器

回答

4

在功能check_pass

user = User.find_by_email(params[:user][:email]) 
    respond_to do |format| 
    if user && user.authenticate(params[:user][:password]) 
     format.json { render :json => @user } 
    end 
    end 
+0

'語法錯誤,意想不到tIDENTIFIER,期望 ')' format.json {渲染:JSON => @user}' – MID

+0

如果用戶&& user.authenticate(PARAMS [:用戶] [:密碼]) format.json {render:json => @user} end –

+0

'Template is missing',without respond_to do。我無法理解爲什麼,當我檢查唯一性時,它不想要模板。 – MID

0

密碼不存儲在純文本格式這是一個鹽醃哈希,所以用戶無法發現使用的密碼。

您可以驗證密碼是否有效 所以鹽醃哈希工作像

  • 加密後的字符串=明文(口令)+哈希算法中(加密)

  • 一些隨機字符串(鹽)+加密後的字符串,然後檢查是否匹配 您可以使用warden.authenticateauthenticate(檢查文檔)方法對用戶進行驗證密碼

+0

謝謝,但是您知道Devise gem中有用嗎? – MID

+0

你想要什麼設計你必須定製設備,你可以使用像'resource = warden.authenticate!(:scope => resource_name,:recall =>「home#index」)#覆蓋 – Amar

+0

我想我很接近到答案。你能看看上面的評論嗎? – MID

5

我使用的軌道4版,當我試圖做user.authenticate我得到了錯誤,說知曉的方法,所以我找到了檢查,如果密碼是有效的另一種方法,

valid_password?(current_password)

我想分享它所以它可能也會幫助其他人。

相關問題