[Django] check_password() 본문

[PL]/Python

[Django] check_password()

객과 함께. 2022. 7. 16. 20:00

아래 두 소스는  로그인한 회원이 개인 정보를 수정 하기 위해서 다시 한 번 비밀번호를 입력 하는 부분 입니다. 

True - 회원 정보를 수정 페이지 넘기고  False - 나오면 계속해서 비밀번호 페이지로 가게끔 할려고 합니다.  

 

[ 첫번째 소스 ]
def user_repw(request) :

    if request.method == "POST" :
    
        uid = request.POST.get('hidden_userid', '') 
        
        upw1 = User.objects.filter(pk=uid).values('password')  
        
        upw2 = request.POST.get('repw')
        
        if check_password(upw2, upw1) :
        
            return redirect('acc:info')
            
        else :
        
            return  render(request, 'acc/userinfo.html')
            
    return render(request, 'acc/userinfo.html')
[ 두번째 소스 ]
def user_repw(request) :

    if request.method == "POST" :
    
        uid = request.POST.get('hidden_userid', '')     
        
        upw2 = request.POST.get('repw')
        
        user1 = User.objects.get(id=uid)
        
        if check_password(upw2, user1.password) :    
        
            return redirect('acc:info')  
            
        else :
        
            return  render(request, 'acc/userinfo.html')
            
    return render(request, 'acc/userinfo.html')

위 소스에서 문제가 되는 부분은 check_password() 부분 입니다. 

첫번째 소스에서는  오류가 나거나 정상적으로 돌아간다 하더라도 BOOL값인  Only False값이 떨어집니다.원인을 찾아 볼려고 수일째 인터넷을 돌아다녀도 이거다 하는 것을 찾지 못했습니다. (블로그, stackoverflow, 등등 )

 

블로그 주소를 기억 하지 못해서 못 올립니다. 

그분이 올린 글을 보고 (두번째 소스)수정 하니 생각한 되로 값이 나오고 있었습니다. 

 

upw1 이라는 변수가 데이터베이스에 저장된 암호이고, upw2 변수는 사용자가 입력한 문자열(암호화 하기전 암호) 암호,  

uid는 로그인 사용자의 인덱스 번호입니다. 

[ result = check_password('문자열 입력한 암호', '데이터베이스 암호화가된 암호') Bool값을 반환 합니다. ]

아시는 분은 답글 부탁드립니다. 

 

 

 

 

 

 

 

 

'[PL] > Python' 카테고리의 다른 글

Matplotlib 연습  (1) 2022.10.04
python 가상환경 node.js(npm) 설치  (0) 2022.10.03
ipynb -> html, ipynb -> py 변환  (0) 2022.01.26
[Python] for loop관련 예제  (0) 2022.01.25
Django-allauth 설정 및 작성  (0) 2022.01.13