django 기본 사용자 테이블을 사용하지 않으므로 사용자 이름과 해시 암호가있는 사용자 테이블을 만들었습니다. 나는 데이터베이스에 게시 할 때 make_password()를 사용하여 암호를 해시했지만 사용자 입력 암호 해시와 동일한 방법을 사용하여 데이터베이스에서 정보를 검색하려고 시도했을 때 동일한 암호에 대해 다른 해시를 얻습니다. 아래는 사용자를 저장하고 세부 정보를 검색하기위한보기 코드입니다. 소금의Make_Password가 동일한 암호에 대해 다른 해시 값을 반환합니다.
view.py
class HMUser(APIView):
def post(self, request):
request.data['password'] = make_password(request.data['password'])
print(request.data['password'])
serialize = serializers.HMUserSerializer(data=request.data)
if serialize.is_valid():
serialize.save()
return Response(1, status=status.HTTP_201_CREATED)
return Response(serialize.errors,
status=status.HTTP_400_BAD_REQUEST)
class Login(APIView):
def get(self, request, username, password):
print("pass ", password)
userpassword = make_password(password)
print("Hash", userpassword)
user_details = models.HMUser.objects.get(username=username,
password=userpassword)
serialize = serializers.HMUserSerializer(user_details)
return Response(serialize.data)
감사합니다. Mahesh 님, 저는 사용자 이름과 비밀번호를 모두 사용하고 있지만 일반 인증 프로세스 인 해시 된 비밀번호 만 사용하고 있습니다. 나는 내가 해싱 할 때 뭔가 잘못하고 있다고 생각한다. –
당신이 관찰하는 것을 소금과 의도 된 보안 기능이라고합니다. –
고마워, 그래서 내가 그 문제를 해결할 것을 제안합니까 ?? –