6

Ben ek işlevselliği ile kimlik doğrulaması yöntemini geliştirmek için nasıl anlamaya çalışıyorum.geçersiz kılma authenticate yöntemi - Django yönetici

örn. Bu yönetici panelinden ilgili sitenin kullanıcı arabirimi için oldukça yalındır, ama ne

  • Bitmek şifreleri
  • özel şifre biçimleri
  • uzunluğu gereksinimleri
  • vs ...?


    Ben authenticate muhtemelen orada bulunduğu gibi, Kullanıcı Yöneticisi nesnesi geçersiz gerektiğini düşünüyorum. Bu bence anlamaya karar vermek zor.

    Şimdiden teşekkürler! :)

cevap

6

Sen http://docs.djangoproject.com/en/dev/topics/auth/#authentication-backends talimatları uygulayarak özel kimlik doğrulama arka uç oluşturabilir.

class MyBackend: 
    def authenticate(self, username=None, password=None): 
     # Check the username/password and return a User. 

Sonra settings.py yılında AUTHENTICATION_BACKENDS için sınıf ekleyin: Esasen, bir authenticate yöntemini içeren bir arka uç sınıf oluşturmak. Bu kimlik doğrulama için olsa

, size şifre örneğin doğrudur ama süresi dolmuş ise bir değişiklik şifre sayfaya kullanıcı yönlendirerek basitçe belirtilen tüm şifre doğrulama şeyler yapabilir. Bir kullanıcıya genel bir şifre değiştirme sayfasına yönlendirirken neler olduğu hakkında bir ipucu vermek için messaging framework'u kullanmayı düşünün. Eğer şifreler için doğrulama modeline yerleşik olmak istiyorsanız

+0

Merhaba neredeyse herşeyi örtülü var: O Bu iyi cevap olduğunu! Çok teşekkür ederim. – RadiantHex

+0

Merhaba, auth backend'i uyguluyorum, sinyaller hakkında kafam karıştı. Yönetici içinde doğru doğrulama yapmanın bir yolu yok mu? – RadiantHex

+0

@RadiantHex Django sinyal bölümü için özür dilerim. Ham şifreyi modelden okuyamayacağınız (zaten hash edilmiştir) ve bu nedenle doğrulama işlemini yapamayacağınız için sizin durumunuzda geçerli değildir. Jordan'ın şifre sayfasını özel bir görünüme kaçırma önerisi daha iyi. Sadece şifreyi değiştirebilecek tüm sayfaları ele almanız gerekiyor. Başka bir yaklaşım, "set_password" yönteminin [monkey-patching] (http://stackoverflow.com/questions/192649/can-you-monkey-patch-methods-on-core-types-in-python) yöntemini denemektir. 'Kullanıcı' modeli. –

1

, sonra muhtemelen extend the django User model isteyeceksiniz. o zaman sadece (r'^admin/', include(admin.site.urls)) yukarıda ilgili URLLERİ koyarak, değişen ve şifreleri ayarlamak için kendi görüşlerini oluşturarak

  • geçersiz kılma yönetici şifresi seçenekleri:

    Aksi takdirde şu yapabilirdi. Regex, (r'^admin/auth/user/(\d+)/password/', new_change_password) gibi bir şeye benziyordu.

  • ayrı modelde şifre yaş takip edin ve geçerlilik süresi ne zaman sona erer kez, sonra bir değişiklik şifre yönlendirme.
+0

Merhaba Cevabınız için teşekkürler! – RadiantHex

+0

Merhaba Bu cevabı aslında daha faydalı buluyorum, parola değiştirme görünümüne nasıl bir görünüm iletileceğine dair bir ipucunuz var mı? – RadiantHex

+0

Bir yönlendirmeyi mi kastediyorsunuz? Kullanıcıyı değişiklik şifresi sayfası için URL'ye yönlendirmek için 'HttpResponseRedirect' kullanabilirsiniz. Django/contrib/auth için urls dosyasına bakarsanız, hangi url adının kullanılacağını bulabilirsiniz. –