2012-05-15 4 views
0

이 간단한 코드를 사용하여 내 view.py에서 사용자를 만듭니다.django의 사용자 클래스 이해하기

if not errors: 
    user = User.objects.create_user(username, email, password) 
    user.save() 

유효성 검사를 제외하고는 개체를 만들기 전에 사용자 이름과 암호 값에 수행 할 작업이 없습니다.

그러나 장고 API의 User 클래스에서이 부분을 찾을 수 있습니다. 도움말 텍스트를 사용하는 방법을 모르겠습니다. 도움이된다면 무엇을 인쇄합니까? algo, salt 및 hexdigest의 기본값은 어떻게 찾습니까?

password = models.CharField(_('password'), max_length=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>.")) 
+2

www.djangobook.com에 대한 시간, 나는 –

답변

0

도움말 텍스트는 기본적으로 사용자 개체를 편집 할 때 django 관리자에게 표시되는 메시지의 코드입니다. 이는 편집 양식을 보는 사람에게 설명하기위한 것이며, 암호 필드에는 해당 사용자에 대해 설정된 암호 대신 sha1$12345$1234567890abcdef1234567890abcdef12345678과 같은 문자가 사용됩니다. 그 이유는 물론 암호가 보안을 위해 암호 해시되고 그 표현은 나중에 사용자가 입력 한 암호를 확인하는 데 필요한 모든 정보를 보유하기 때문입니다.

admin 사용자 편집 양식에는 암호를 편집 할 수있는 특별한 페이지가 있습니다. 코드에서 사용자 암호를 편집하려면 사용자 개체의 set_password 메서드를 사용하고 check_password 메서드는 제공된 암호를 확인하는 것입니다.

make_password의 설명서에는 장고가 사용하고 사용할 수있는 알고리즘에 대한 자세한 정보가 있습니다. Django < 1.3의 기본값은 sha1이고 Django 1.4는 기본값을 PBKDF2으로 변경했습니다. salt의 기본값은 임의의 문자열입니다 (두 개의 동일한 암호가 데이터베이스에서 동일하게 보이지 않습니다). Hexdigest은 암호 문자열의 값이고 소금 문자열은 해시 알고리즘으로 해시됩니다. 자세한 내용은 github의 코드를 참조하십시오.

1

"도움말 텍스트이면 무엇이 인쇄됩니까?" ->가 인쇄 정확히 : 형식으로 해시 암호를 만듭니다 사용자를 만들 때 사용 '[너 한테] $ [소금] $ [hexdigest]'

자동 make_password(password[, salt, hashers])

를 호출합니다 이 응용 프로그램에서 사용합니다. 하나의 필수 인수 인 일반 텍스트의 암호가 필요합니다. 선택적으로 기본값 (PASSWORD_HASHERS 설정의 첫 번째 항목)을 사용하지 않으려는 경우 사용할 소금 및 해싱 알고리즘을 제공 할 수 있습니다. 현재 지원되는 알고리즘은 다음과 같습니다 'unsalted_md5' 'pbkdf2_sha256', 'pbkdf2_sha1', 'bcrypt'(장고 bcrypt 사용 참조), 'SHA1', 'MD5',

당신이 어떤 문제에 직면하고있다?

+0

기본 알고리즘과 소금 및 해시 값을 생각하십니까? – John

1

create_user 자동으로 암호 해시를 생성하고 데이터베이스에 사용자를 생성합니다

creating users에 문서를 참조하십시오 (따라서 당신은 user.save()가 필요하지 않습니다).

+0

나는 사용 된 기본 알고리즘과 소금 및 해시 값을 알고 싶습니까? – John