본문 바로가기
Python/Django

Django 공식문서 읽기 - Customizing authentication in Django(1)

by 코드뭉치 2023. 4. 30.

해당 공식문서

Customizing authentication in Django

장고 기본인증도 좋다. 그러나 원하면 다른 인증을 사용해도 좋다. 

이 문서는 어떻게 인증 시스템을 커스터마이징 할 지를 다룬다.


authentication-backends는 user model에 저장된 username과 password가

Django의 디폴트가 아닌 다른 서비스(예를들면 jwt등을 말하는 듯?)에서

인증되어야 할 경우를 위한 확장가능한 시스템을 제공

기본 User 모델을 확장하거나 커스텀할 수 있다(맞춤 권한 등을 줄 수도 있다).


Other authentication sources

 username과 password말고 다른 인증이 필요할 수 있다. 


Specifying authentication backends

인증 백엔드 리스트는 AUTHENTICATION_BACKENDS 설정에 명세.
기본값은 ["django.contrib.auth.backends.ModelBackend"] 이다.


 django.contrib.auth.authenticate()를 호출하면 Django는 모든 백엔드 인증을 거친다.

처음 인증 메소드가 실패하면 두번째를 실행, 모든 백엔드가 시도될 때까지 반복한다. 

(예외, PermissionDenied 발생 시 인증은 즉시 실패처리, 뒤는 확인 x) 따라서 순서가 중요하다. 

첫번째가 성공하면 두번째 인증은 처리되지 않을 것이다.


 사용자가 인증되었다면, Django는 사용자 세션에서 사용자 인증에 사용된 백엔드를 저장. 

사용자에 대한 액세스가 필요할 때마다 동일한 백엔드를 재사용. AUTHENTICATION_BACKENDS를

변경할 경우, 세션 데이터를 지워야한다. (사용자가 다른 방법으로 재인증하도록 해야 하는 경우)

간단한 방법은 Session.objects.all().delete()를 실행하는 것

댓글