2016-03-18 40 views
0

Burada bu soru için belge var biliyorum https://docs.djangoproject.com/en/1.9/topics/auth/customizing/, ancak kullanım durumumda bazı açıklamalara ihtiyacım var.django'da Özel Kullanıcı ile Özel Kimlik Doğrulama?

Temel olarak oluşturduğum bir api var. Bu API'nin yaptığı şey, kullanıcı form verilerini harici bir URL'ye gönderir ve gönderildikten sonra, veriler bu harici URL'ler veritabanına kaydedilir.

Belirli bir kullanıcıyı başka bir api çağrısı aracılığıyla alabilirim. Kullanıcı bir nesne olarak iade edilir. Şimdi bu kullanıcıyı sistemimde kullanarak django.contrib.auth kullanarak sonlandırmaya çalışıyorum ama ne çalışıyorum. İşte

benim süreçtir: Ben NEW_APP en arka uç dosyasında benim settings.py dosyasının

AUTHENTICATION_BACKENDS =(
    'new_app.backends.SettingsBackend', 
    'django.contrib.auth.backends.ModelBackend', 
) 

B. için bir özel kimlik doğrulama arka uç eklendi

A. Aşağıdaki kod var:

: bir oturum açma görünümünde
class SettingsBackend(object): 
    def authenticate(self, username=None, password=None): 
      if username and password: 
       user = api.get_user() 
       #add pk to user object to satisfy django error warning 
       user.pk = user.unique_field 
       return user 
      return None 

    def get_user(self, user_id): 
     try: 
      if self.user.pk == user_id: 
       return self.user 
     except: 
      return None 

, bu kullanımında kullanıcı oturum çalışıyorum Hata auth.login(request, auth_user) hattında oluştuğunu

'api.get_user()' object has no attribute 'save' 

:

hata söyleyerek olsun.

Bunun sebebi, django.contrib.auth kullanıcı nesnesinin bir django modeli olduğunu düşündüğünden kaynaklanıyor. Öyleyse, benim senaryolarımın işe yaraması için bunu nasıl çözmeliyim? Zaman ayırdığın için teşekkürler.

+0

Değiştirilmiş kullanıcı modelini ayarlarda belirtmiş misiniz? – RA123

+0

@ RA123 yanıt için teşekkürler. Bunu yapmadım çünkü bu tipik bir django kullanıcı modeli değildi, bu yüzden gerekli olmadığını düşündüm. Yakın olduğumu hissediyorum, ancak belki de django.contrib.auth'u kullanmam ve kendi auth yöntemimi kullanmam gerekiyor ama bu konuda rehberliğe ihtiyacım var. – user875139

+0

Lütfen ilk önce django'nun kullanıcı modeli – RA123

cevap

0

Ben django inceliklerinde uzman değilim (bir süredir mikro çerçeveler için django'dan ayrıldım).

Bu, eğer ben olsaydım, api.get_user() geri dönüyorsa, bu nesneyi ne bekliyorsa o nesneyi beklediğinden emin olun, yani boş bir save() yöntemiyle başlıyor demektir.

Ayrıca, standart django öğelerini de yapmak istiyorum; @ RA123, bir yorumda AUTH_USER_MODEL değerini ayarlayarak önerir.

+0

gibi giriş için teşekkürler! Şimdi buna bakıyorum. Çalıştığımda cevap vereceğim. – user875139

İlgili konular