안녕하세요 메신저 레일에 Bcrypt, 지금은 패스워드 해시를 만들 수 있었지만 패스워드에 대한 사용자 입력과 비교할 때이 보석을 올바르게 사용하는 방법에 대해 궁금합니다. 일치하지 않습니다.레일에 Bcrypt 루비
여기에 암호화 및 로그인 코드가 있습니다.
def self.login(user)
hashed_password = encrypt_password(user["password"])
result = User.where({:username => user["username"], :password => hashed_password})
return result
end
def self.add_user(user)
hashed_password = encrypt_password(user["password"])
result = User.create({:username => user["username"],
:password => hashed_password,
:firstname => user["firstname"],
:middle_initial => user["middle_initial"],
:lastname => user["lastname"],
:advisory_class => user["advisory_class"]})
return result
end
def self.encrypt_password(password)
password_salt = BCrypt::Engine.generate_salt
password_hash = BCrypt::Engine.hash_secret(password,password_salt)
end
add_user에서는 로그인 기능을 사용하여 로그인 할 때 encrypt_password 함수를 사용하여 암호화했습니다. 암호가 데이터베이스에서 암호화 된 암호와 일치하지 않습니다. 나는 올바른 방법으로 이것을하지 않는 것이 확실하다. 내가 잘못하고있는 부분을 지적 할 수 있겠 니? 감사.
참고로, 해시 중괄호는 'x ({...})'형식의 호출에서 루비에서 암시 적이기 때문에 생략 할 수 있습니다. 예를 들면 다음과 같습니다 :'User.create (: username => user [ 'username'], ...)'또는 더 좋은'User.create (username : user [ 'username'], ...)' 표기법. – tadman
메모를 보내 주셔서 감사합니다.하지만 지금은 내 관심사가 아닙니다. –