2016-06-30 3 views
0

opensx (django에서 작동)에서 작업 중이며 특정 사이트에서 오는 사용자를 등록하기 위해 api를 만들어야합니다. 해시 된 암호가 제공되고 있습니다. 정상적인 것이 아니며 그렇게 저장해야합니다.django, 등록시 해시 된 암호를 입력하여 저장하십시오.

여기서 문제는 열린 X의 등록 기능이 전달 된 암호를 해시하는 것입니다.

이렇게 장고에 암호를 저장하거나 암호를 해싱하지 않고 사용자를 등록하는 방법이 있습니다.

내가 직접

raw() 

주시면 감사하겠습니다 도움이, 감사를 사용하여 사용자의 자격 증명을 업데이트하기위한 이동합니다.

+0

참고로 올바른 답변으로 플래그를 지정하거나 제안 된 답변으로 작동하지 않는 것에 대한 세부 정보를 제공하는 것이 좋습니다. –

답변

1

user_model에서 set_password 메소드 세트를 재정의 할 것을 제안합니다.

class MyUser(AbstractBaseUser): 
    # if you need to hash passwords for some users. 
    is_password_hashed = models.BooleanField(default=True) 
    ... 

    def set_password(self, raw_password): 
     if self.is_password_hashed: 
      super(MyUser, self).set_password(raw_password) 
     else: 
      self.password = raw_password 

만이 아닌 해시 된 암호를 저장하려면

:

class MyUser(AbstractBaseUser): 
    ... 

    def set_password(self, raw_password): 
     self.password = raw_password 

심지어 기본 사용자 모델을 set_password 메소드를 오버라이드 (override).

1

그것은 간단합니다 같은 :

from django.contrib.auth.models import User 
User.objects.filter(username="myuser").update(password=hashed_password) 

새 사용자를 만들 때이 사용 사례를 지원하기 위해

0

열기 EDX manage_user 관리 명령 was recently updated (암호는 데이터베이스에 해시 값으로 저장하는 기억).

는 예 :

./manage.py lms --settings=devstack manage_user jane [email protected] --initial-password-hash 'pbkdf2_sha256$20000$mRxYkenyBiH6$yIk8aZYmWisW2voX5qP+cAr+i7R/IrZoohGsRK2fy4E='

그러나이 명령은 열기 EDX의 매우 최신 버전을 필요로하며, 사용자 계정이 이미 존재하는 경우는 영향을주지 않습니다.

외부 앱과 Open edX 사이에 OAuth2를 사용하여 SSO를 설정할 수 있습니다.이 경우 Open edX가 비밀번호를 저장할 필요가 없습니다.

+0

안녕하세요, 대답 주셔서 감사합니다 .. 당신은 어떤 자료에 대한 opensso와 일부 응용 프로그램 사이에 sso에 관한 나를 가리킬 수 있습니까? –

+0

http://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/tpa/에는 몇 가지 문서가 있습니다. 현재 가장 쉬운 방법 인 OAuth2 세부 정보가 누락되었습니다. 본질적으로, 타사 인증 기능 (문서 참조)을 활성화 한 다음 django 관리자로 이동하고 django admin의 OAuth2 공급자 설정 영역을 사용하여 OAuth2를 구성해야합니다. – bradenm

관련 문제