기존 배송정보를 사용하거나,
새로운 배송정보를 입력받아서 저장하는 중 발생한 문제
def create(self, request, *args, **kwargs):
# 기존 배송정보 사용 시
if delivery_id := self.request.data.get("delivery_id"):
deli = get_object_or_404(Delivery, pk=delivery_id)
data = {
"user": request.user,
"address": deli.address,
"detail_address": deli.detail_address,
"recipient": deli.recipient,
"postal_code": deli.postal_code,
}
serializer = self.get_serializer(data=data)
# 새로운 배송정보 입력 시
elif request.data.get("postal_code") and request.data.get("recipient"):
data = request.data
serializer = self.get_serializer(data=data, context={"user": request.user})
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data, status=status.HTTP_201_CREATED, headers=headers
)
해당 메소드로 데이터를 저장한 뒤, GET요청 시 복호화 과정을 거친 후에도 암호화된 데이터가 나오고 있었음.
새로운 배송정보를 받아와서 암호화 하던 과정에서,
기존 배송정보를 사용 시, 암호화된 배송정보를 다시 암호화해서 저장하면서 암호화를 이중으로 하고 있었음.
serializer = self.get_serializer(data=data, context={"skip_validation": True})
def encrypt_deliveries_information(self, deliveries, validated_data):
"""
오브 젝트 암호화
"""
# 기존 배송정보 사용 시 암호화 PASS
if self.context.get("skip_validation") is True:
return deliveries
encrypt_result = AESAlgorithm.encrypt_all(**validated_data)
deliveries.address = encrypt_result.get("address")
deliveries.detail_address = encrypt_result.get("detail_address")
deliveries.recipient = encrypt_result.get("recipient")
deliveries.postal_code = encrypt_result.get("postal_code")
deliveries.save()
return deliveries
암호화 과정에서 스킵 과정을 추가해서 해결
'ERROR' 카테고리의 다른 글
암호화 알고리즘 사용 시, max_length 설정 에러 (0) | 2023.07.02 |
---|---|
GenericView perform_create에서 에러 발생시키기 (0) | 2023.06.26 |
퍼미션 논리연산시, Error raise (0) | 2023.06.26 |
테스트 코드 작성 중 .save() 누락 (0) | 2023.06.26 |
WIL 20230619 ~ 20230625 - 최종 프로젝트 주차 3 (0) | 2023.06.26 |
댓글