9 처음 장고 사용자 정의 암호화 암호 인증

먼저 아이디어, 데이터베이스 계정 암호를 암호화 생각하지만, 기본 사용자 모델 만있는 것처럼 암호화 방법의 장고 문서 set_password 보인다

즉,

에서 django.contrib.auth.models 수입 사용자

이 모델은, 유효

 

당신이 모델의 자신의 정의에 사용할 그래서, 조사의 검색은 문서가 werkzegu 같은 플라스크의 암호화 및 두에없는 것을 발견

그러나 일부 구덩이 참고있다

 

클래스 사용자 (models.Model) :
     클래스 메타 : 
        db_table = ' 사용자 ' 

    이름 = models.CharField (MAX_LENGTH = 20, 널 (null) = 사실, 독특한 = 참) 
    암호 = models.CharField (MAX_LENGTH = 128 ) 
    create_date = models.DateTimeField ( auto_now_add = 참) 

    데프  __str__ (자동) :
         리턴 self.name의 


    데프 _set_password (자기, 비밀번호) : 
        self.password = make_password (비밀번호) 

    데프 _check_password (자기, 패스워드) :
         복귀 은 check_password (암호 self.password)

_set_password 내 데이터 인 간단한 사용자 모델은 변경하지 않고 기본 암호 암호화됩니다 저장해야

_check_password은 검증은 사용자에 쿼리입니다, 그러나 이것은 구덩이이며,

 

플라스크는 비밀 번호를 확인합니다

데프 _check_password (자기, 비밀번호) :
     반환 은 check_password (self.password, passowrd)

먼저 사용자 쿼리를 확인할 수있을 것입니다 직접 사용자가 입력 한 일반 텍스트 암호를 입력,이 방법 _check_password를 사용하는 자신의

 

그러나 위치 및 대비의 플라스크 장고 매개 변수, 즉 잘못 생각하기 쉬운 첫 번째 명확한 암호화 된 텍스트, 암호입니다

# 源码
DEF 은 check_password (암호 부호화 세터 = 없음, 바람직 = ' 디폴트 ' ) :

먼저 일반 텍스트 암호, 암호화 된 암호는 ,하지만 난 매개 변수의 위치를 제어하지 않습니다,이 방법은 사실, 플라스크에서, 그리고 직접, 즉시 셋업으로 잘 채우 좋아

이 암호화의 관점에서 알림 기능이 문제를 직면하게 될 것이다 기억 기억

 

1 개  데프 로그인 (요구)
      있는 경우 request.POST.method == " POST " :
 3          명 = request.POST.get ( ' 이름 ' )
 4          암호 request.POST.get = ( ' 암호 ' )
 5          유저 = 유저 .objects.filter (NAME = 이름) 좁은 방 ()
 6          만약 사용자 :
 7              경우 user._check_password (암호)
 8                  # 舍弃掉django.contrib.auth 오기로부터는 인증 
9                  중 #사용자가있는 경우에만 데이터베이스 쿼리, 결국 사용자 정의 로그인 인증합니다로 대체하지만 암호화 된 경우, 암호 필드 문의는 음 .. 암호화 할 필요가있다 
(10)                  # 필드를 추가 할 로그인 세션의 사용자가 아니라 
(11)                  , 로그인 (요청 사용자를 )
 (12)는                  반환 (revsrse (리디렉션 ' : 앵드 사용자 ' ))
 (13)는              다른 :
 14                  리턴 (가), (요청을 렌더링 ' login.html ' {, " MSG는 " : " 계정 암호가 일치하지 않습니다 " )}
 15           다른 사람을 :
 16               반환 렌더링 (요청 , ' login.html ' , { " MSG" : " 계정 암호가 일치하지 않습니다 " )}
 (17).  
(18)가  
19.      반환   반환 합니다 (렌더링 요청, ' login.html을 ' )

 

 

 

 

참조  https://blog.csdn.net/qq_27437781/article/details/86002317를

추천

출처www.cnblogs.com/zengxm/p/11317489.html