我无法使用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
结束
用这个代码火虫给我错误
406 Not Acceptable
end
检查电子邮件唯一性操作示例:
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">
有人可以建议如何做吗?
我使用的是 rails 版本 4,当我尝试执行 user.authenticate 时,我收到错误消息说未知方法,所以我找到了另一种检查密码是否有效的方法,
valid_password?(current_password)
我想分享它,这样它也可以帮助其他人。
函数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
密码不是以纯文本格式存储的,它是一个加盐哈希,因此用户无法使用密码找到。
您可以验证密码是否有效所以盐渍哈希工作像
-
加密字符串 = 明文(密码)+哈希算法(加密)
-
一些随机字符串(盐)+加密字符串然后检查匹配您可以使用
warden.authenticate
或authenticate
(检查文档)方法来验证密码