문제점은 권한
과 보안
그리고 cookie(session or token)
이었다.
@csrf_exempt
이 항상 거슬렸다.
csrf token
은 사용자를 통해 공격자가 행하는 위해를 막기 위함인데
지금까지는 구현했던 view들은 함수 기반이고, 이러한 기능들을 제한 없이 실행하기 위해 @csrf_exempt
데코레이터를 사용했다.
이걸 안 쓰면 forbidden(403)
을 주야장천 구경해야 했기 때문이다.
이에 따라 django에서 제공하는 기본 libarary를 사용해야 함을 알게 되었다.
-> AbstractUser 클래스를 상속한 model을 작성했다.
또한 permissionmixin
클래스를 추가로 상속했다.
아직까지 권한 즉, auth
에 관한 문제를 Web단에서 충분히 해결하지는 못했다.
권한에 관한 문제는 당연히, 또 분명히 추후에 문제가 될 것이며 이에 관련한 문제를 완벽하게 해결해야 함은 인지하고 있다.
예를 들어 로그인하지 않은 사용자가 id만을 가지고 특정 url에 접근하여 POST 또는 GET method를 사용할 수 있다면 이는 엄청난 문제가 되기 때문이다.
새벽에 새로이 서버를 구현하면서 django rest-auth
의 일부 함수가 legacy로 변했다는 것을 알았고, 구글링을 통해 찾은 레퍼런스를 따라하는 것으론 기능구현을 하는 것이 힘들었다.(django v4.0)
router
가 작동하지 않음으로 인해 관련된 소스코드가 엉키는 듯한 현상을 겪었다. 소스코드를 path
함수를 써서 변경해보았지만 계속된 오류를 겪으며 결국은 AbstractUser
와 permisssionmixin
클래스를 상속하는 model을 작성해보는 정도로 그칠 수 밖에 없었다. 😢
REST framework와 django에서는 정말 다양한 종류의 view를 제공하고 있다.
이는 빠르게 웹을 구축하고 백엔드를 구현할 수 있게 해주는 기능들인데 나는 그 기능을 아직까지도! 충분히 이해하지 못하고 있다.
정말이지 미칠 노릇이다. 어떻게 굴러가고 있는지 구경하고 싶다.
django REST framework가 제공하는 기능은 generic부터 mixin까지 굉장히 다양하다.
이 모든 것을 한 번에 다 알 수 있으면 좋겠지만 그렇게 되지 않음이 너무 안타깝다. 😢😢
딱 보기만 해도 너무 편해보이는데, 내가 사용하려 하니 일정 부분에서는 커스텀이 필요한 것 같고, 커스텀을 하자하니 아직 능력이 부족하다. 😢😢😭
허나 이 중에서 @api_view
데코레이터를 씌우고 AbstractUser
클래스를 상속함으로써 @csrf_token
없이도 view를 호출하여 해당 기능을 사용하는 것이 가능해졌다는 것이 일단은 다행이라 여겨진다.
열심히 한다고 했는데 삽질만 실컷 한 기분이다. 😭😭😭
역시 할 줄 아는 것만 계속 하는 게 아니라, 못하는 것에 대한 레퍼런스를 모으고 실제로 구현해보는 것이 답인 것 같다.
이 다음에 내가 하게 될 것이 어떤 것이 될지 기대된다.
지금까지 해왔던 것 중에 정말 모르는 것들을 정리해두고 벨로그 자체를 내 기록장으로 쓰는 작업에 신경을 써야겠다.
Python 백엔드뿐만이 아니라 다른 언어들로 구현한 서버들도 구경하고 준비해야겠다.
하나하나 기록해두는 소중함을 알게된 프로젝트 기간이었다.
하루가 시작되면 또 고민하고 코딩해야지.
끝.