我无法使用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">
有人可以建议怎么做吗?
答案 0 :(得分:6)
我正在使用rails版本4,当我尝试使用user.authenticate时,我收到错误说未知方法,所以我找到了另一种方法来检查密码是否有效,
valid_password?(current_password)
我想分享它,这样也可以帮助其他人。
答案 1 :(得分: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
答案 2 :(得分:0)
密码不以纯文本格式存储,它是盐渍哈希,因此用户无法找到使用密码。
您可以验证密码是否有效 所以咸味哈希就像
一样crypted string = plaintext(password)+ hashing algo(encrypt)
然后检查一些随机字符串(盐)+加密字符串是否匹配
您可以对用户使用warden.authenticate
或authenticate
(检查文档)方法来验证密码