Django uygulamamda, bir kullanıcı oturum açtığında birkaç periyodik arka plan işi çalıştırmaya başlamalı ve kullanıcı oturumu kapattığında bu işleri çalıştırmayı bırakmalıyım, bu yüzden şık bir yol arıyorum
- bir kullanıcı oturum açma / oturum kapatma konusunda bilgilendiril
- kullanıcı oturum açma durumunu sorgulama
Benim açımdan ideal çözüm şöyle olurdu:
- her biri tarafından gönderilen bir sinyal
django.contrib.auth.views.login
ve... views.logout
django.contrib.auth.models.User.is_logged_in()
benzer bir yöntem... User.is_active()
veya... User.is_authenticated()
Django 1.1.1'de buna sahip değil ve kaynağı yamamak ve eklemek konusunda isteksizim (bunu nasıl yapacağımdan emin değilim).
Geçici bir çözüm is_logged_in
olarak, UserProfile modeline varsayılan olarak temizlenen, kullanıcının açılış sayfasına ilk kez vurduğunda (tarafından tanımlanan LOGIN_REDIRECT_URL = '/'
) ayarlanan ve sonraki isteklerde sorgulanan bir boole alanı ekledim . Bunu UserProfile'a ekledim, bu nedenle yerleşik Kullanıcı modelini yalnızca bu amaç için türetmek ve özelleştirmek zorunda kalmıyorum.
Bu çözümü beğenmedim. Kullanıcı açık bir şekilde çıkış düğmesine tıklarsa, bayrağı temizleyebilirim, ancak çoğu zaman kullanıcılar sayfadan ayrılır veya tarayıcıyı kapatır; Bu durumlarda bayrağı temizlemek bana pek kolay gelmiyor. Ayrıca (bu daha çok veri modeli netliği nitpicking olsa da) is_logged_in
UserProfile'a değil, User modeline aittir.
Alternatif yaklaşımlar düşünebilen var mı?