내 Django 앱에서 사용자가 로그인 할 때 몇 가지주기적인 백그라운드 작업 실행을 시작하고 사용자가 로그 아웃 할 때 실행을 중지해야하므로 우아한 방법을 찾고 있습니다.
- 사용자 로그인 / 로그 아웃 알림 받기
- 사용자 로그인 상태 조회
내 관점에서 이상적인 솔루션은
- 각각에 의해 전송 된 신호
django.contrib.auth.views.login
및... views.logout
- 또는
django.contrib.auth.models.User.is_logged_in()
유사한 방법... User.is_active()
... User.is_authenticated()
Django 1.1.1에는이 기능이 없으며 소스를 패치하고 추가하는 것을 꺼려합니다 (어쨌든 그렇게하는 방법을 모르겠습니다).
임시 솔루션 is_logged_in
으로 기본적으로 지워지고 사용자가 처음 방문 페이지 (에서 정의 됨 LOGIN_REDIRECT_URL = '/'
)를 방문 할 때 설정 되고 후속 요청에서 쿼리 되는 UserProfile 모델에 부울 필드를 추가했습니다 . UserProfile에 추가 했으므로 해당 용도로만 내장 사용자 모델을 파생하여 사용자 정의 할 필요가 없습니다.
이 솔루션이 마음에 들지 않습니다. 사용자가 명시 적으로 로그 아웃 버튼을 클릭하면 플래그를 지울 수 있지만 대부분의 경우 사용자는 페이지를 떠나거나 브라우저를 닫습니다. 이 경우 깃발을 지우는 것은 나에게 직접적으로 보이지 않습니다. 게다가 (그것은 오히려 데이터 모델 명확성 nitpicking) is_logged_in
UserProfile에 속하지 않고 User 모델에 속합니다.
누구든지 대체 접근 방식을 생각할 수 있습니까?