시행착오의 흔적들/토이프로젝트(코인봇)

사용자 인증, middleware

HyunJung_Jo 2025. 2. 10. 20:33

  • 사용자 코인 계좌 잔고를 조회하는 로직을 views.py에 구현
  • User table에서 api_key, api_secret 을 가져오려는 데, .models에 만든 User을 쓰지 않고 requests에서 가져오는 걸로 구현이 됨
  • 저 request에서 어떻게 유저 정보를 가져올 것인가에 대한 궁금증에 지피티 선생님께 여쭤봄
  • 답변:
    • 네, 사용자의 정보를 Django의 ORM이 아닌 requests.user에서 가져와도 잔고 조회는 가능합니다. 다만, 이를 위해서는 다음과 같은 조건이 필요합니다:
      1. Middleware 설정: 사용자가 인증되어야 하며, 이를 Django의 인증 미들웨어가 처리해서 requests.user에 올바른 정보가 들어 있어야 합니다.
      2. 데이터 일치: requests.user에 있는 사용자의 정보가 데이터베이스에 있는 정보와 일치해야 합니다. 일치하지 않으면 정확한 데이터를 조회할 수 없습니다.
      3. 권한 관리: requests.user에 올바른 권한과 인증이 적용되어 있는지 확인해야 합니다. 적절한 권한 체크 없이 접근을 허용하면 보안 문제가 생길 수 있습니다.
      이 조건들이 잘 충족되면 requests.user를 통해 사용자 정보와 관련된 다양한 작업을 수행할 수 있습니다.
  • 미들웨어가 주요 키 인 것 같아 재질문함 (미들웨어가 로그인할 때마다 작동되는가?)
  • 답변:
    •  
    • 네, Django의 미들웨어는 사용자가 요청할 때마다 실행됩니다. 특히, 인증 관련 미들웨어는 사용자가 로그인할 때와 이후 요청을 처리할 때 사용자 인증 정보를 확인하고, request.user에 현재 사용자의 정보를 설정합니다. 대표적인 인증 미들웨어는 다음과 같습니다:
      • AuthenticationMiddleware: 이 미들웨어는 요청이 들어올 때마다 세션 또는 토큰을 기반으로 사용자를 인증하고, request.user에 User 객체를 할당합니다.
      • SessionMiddleware: 세션을 관리하여 사용자 상태를 유지합니다.
      이러한 미들웨어는 프로젝트 설정 파일의 MIDDLEWARE 리스트에 포함되어 있어야 제대로 작동합니다.
  • 미들웨어가 뭔가 싶어 다시 질문
  • 답변:
    미들웨어(middleware)는 Django와 같은 웹 프레임워크에서 요청과 응답 처리 과정의 중간에 위치하여 추가적인 처리나 변환을 수행하는 컴포넌트입니다. 주로 다음과 같은 역할을 합니다:
    1. 요청 처리: 클라이언트로부터 들어오는 HTTP 요청을 가로채어 특정 작업을 수행할 수 있습니다. 예를 들어, 요청을 로그에 기록하거나 인증을 확인할 수 있습니다.
    2. 응답 처리: 서버에서 클라이언트로 보내는 HTTP 응답을 가로채어 수정하거나 추가적인 헤더를 붙일 수 있습니다.
    3. 세션 관리: 사용자의 세션 정보를 관리하거나, 쿠키를 설정하는 등의 작업을 수행합니다.
    4. 보안: 요청에 대한 인증 및 권한 확인을 통해 보안을 강화합니다.
    미들웨어는 Django 설정 파일의 MIDDLEWARE 리스트에 등록하여 사용할 수 있습니다. 각 미들웨어는 지정된 순서대로 실행되며, 이는 요청과 응답 처리의 흐름에 영향을 미칩니다.

 

결론

인증 관련 미들웨어가 사용자가 로그인할 때 사용자 정보를 request에 담아두기 때문에 곧바로 request에서 사용자 api_key, api_secret을 불러올 수 있다.