2013-06-11 4 views
0

사용자가 현재 비밀번호를 제공해야하는 비밀번호 변경 양식이 있습니다. client_side_validations gem을 사용하면 원격 유효성 검사기/javascript를 사용하여 현재 비밀번호가 올바른지 확인할 수 있습니까? 그렇다면 어떻게?client_side_validations gem을 사용하여 비밀번호를 확인하는 방법은 무엇입니까?

응용 프로그램/뷰/암호/new.html.haml

= simple_form_for @password_form, url: passwords_path, method: :post, validate: true do |f| 
    = f.input :original_password 
    = f.input :new_password 
    = f.input :new_password_confirmation, required: true 
    = f.submit 'Save' 

응용 프로그램/양식/password_form.rb

... 

    attr_accessor :original_password, :new_password 
    validate :verify_original_password 
    validates_presence_of :original_password, :new_password 
    validates_confirmation_of :new_password 
    validates :new_password, password: true 

    def verify_original_password 
    unless @user.authenticate(original_password) 
     errors.add :original_password, "is not correct" 
    end 
    end 

    ... 

답변

1

당신은 암호 정확성 클라이언트 측을 확인할 수 없습니다 DB에 모든 (아마도) 해시 된 암호의 엄청난 목록을 클라이언트에 전달하지 않아도됩니다. 이것은 계산 상으로는 실현 가능하지 않지만 모든 사용자의 암호 해시 목록을 노출하는 것은 더욱 심각합니다! 해커가 이들 중 적어도 일부를 열어 놓는 것은 어렵지 않을 것입니다. (사람들이 MD5 암호 해시 목록의 80 % 이상을 해독하는 이야기가 < 1 시간 안에 들렸다는 이야기를 들었습니다.

암호를 확인하려면 서버와 통화해야합니다.

+0

설명하는대로 클라이언트 측에서 암호를 확인할 수 없다는 것을 알고 있습니다. 분명히 [원격 유효성 검사기/자바 스크립트] (https://github.com/bcardarella/client_side_validations#remote-validators)를 사용하여 존재 여부를 확인할 수있는 client_side_validations gem을 언급하고 있습니다. 어떻게 해야할지 모르겠다. 주어진 사용자에 대한 암호 존재를 확인하십시오. 미안하지만 질문이 명확하지 않은 경우. –