누군가 http-basic-auth를 단순화하기 위해이 flask extension을 사용했는지 궁금합니다.flask-httpauth : get_password 데코레이터가 basic-auth에서 작동하는 방법은 무엇입니까?
기본적으로 이해가 안 돼요이 example :
users = {
"john": "hello",
"susan": "bye"
}
@auth.get_password
def get_pw(username):
if username in users:
return users[username]
return None
get_password
장식은 주어진 사용자의 명확한 비밀번호를 반환하는 것 같아 그것은 사용자가 제공 한 하나에 일치하는 경우, 다음 권한 부여 것 수여된다.
하지만 아무도 처음부터 사용자의 명확한 비밀번호에 액세스 할 수 없어야합니다. 보통 백엔드에 일반 암호와 사용자 이름을 보내고 암호를 해시하고 데이터베이스의 기존 해시 암호와 비교합니다.
어떻게 계획 되었습니까? 워드 프로세서에
링크 좀 더 빛을 비춰 : UPDATE
. 두 번째 장식이 달성하기 위해이 필요하기 때문에 :
@auth.hash_password
def hash_pw(username, password):
get_salt(username)
return hash(password, salt)
을 그대로 규칙은 get_password(username) == hash_password(password)
나는 일이 이해하는 방법이다 동일 할 필요가 데이터베이스에 get_password
반환 사용자의 해시 된 암호입니다 hash_password
방법으로 정의 된 현재 해쉬 된 암호.
문제는 그래도 사용하고 있습니다. sha256_crypt from passlib입니다.
def verify_password(password, hashed_password_in_db, password_hash_version):
if password_hash_version == 1:
return sha256_crypt.verify(password, hashed_password_in_db)
return False
여기서 주어진 암호를 해시하고 저장된 해시 암호와 비교할 수 없습니다. false 또는 true를 반환하는 sha256_crypt.verify(password, hashed_password_in_db)
메서드를 사용해야합니다.
이 방법이 있습니까? 아니면 내 자신의 솔루션을 롤업해야합니까? 감사합니다
https://github.com/miguelgrinberg/Flask-HTTPAuth/blob/master/docs/index.rst – CBroe
링크를 제공해 주셔서 감사합니다. 프로젝트 홈페이지에는 링크가 누락되어 있습니다. 업데이트 된 질문을 살펴 보시기 바랍니다. 감사 – Houman