4

我无法使用 jQuery 验证检查当前密码。我正在使用 Devise gem 和 jQuery 验证。萤火虫 说:

问题出在我的控制器中:

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

结尾

使用此代码 Firebug 给了我错误

 406 Not Acceptable

end

checkemail 唯一性操作示例:

 def checkemail
  @user = User.find_by_email(params[:user][:email])
   respond_to do |format|
   format.json { render :json => !@user }
  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

3 回答 3

9

我正在使用 rails 版本 4,当我尝试执行 user.authenticate 时出现错误提示未知方法,所以我找到了另一种检查密码是否有效的方法,

valid_password?(current_password)

我想分享它,这样它也可以帮助其他人。

于 2014-06-19T11:10:53.260 回答
5

在函数 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
于 2012-09-26T10:07:25.617 回答
0

密码不是以纯文本格式存储的,它是一个加盐哈希,所以用户无法使用密码找到。

您可以验证密码是否有效

  • 加密字符串 = 明文(密码)+哈希算法(加密)

  • 一些随机字符串(盐)+加密字符串然后检查匹配您可以在用户上使用warden.authenticateauthenticate(检查文档)方法来验证密码

于 2012-09-26T10:11:07.853 回答