2011-11-30 22 views
6

vardır, hata aşağıdaki var:'AnonymousUser' nesne django-socialregistration kullanarak hiçbir özellik 'arka uç'

'AnonymousUser' object has no attribute 'backend' 

nasıl

  1. Ben url bağlamak facebook tıklayın.
  2. Bu Facebook beni aldı ve giriş yapmamı isteyin. Bu yüzden izin istedim, izin verdim.
  3. Bundan sonra beni siteme yönlendir. Ve kurulum için sor. Kullanıcı ve e-posta adresi veriyorum.

Trace noktası:

path/to_file/socialregistration/views.py in post 
128.  self.login(request, user) 

bilen var mı, neyin var

  • ben gönderdikten sonra, yukarıdaki gibi bir hata var?

  • +0

    Sizin AnonymousUser sınıfının nesnesi 'backend' özniteliğine sahip değil. Bu yanlış olan şey. – Tadeck

    +0

    Bunu biliyorum. Sorum şu: django-socialregistration neden geçerli kullanıcı alamadı, ama AnonymousUser olsun – Elisa

    +0

    Tam tracback yapıştırır mısınız? – meson10

    cevap

    8

    Ah adam ben temelde uğramadan

    self.login(request, user) 
    

    aradığınız, bu hatayı her zaman almak için kullanılır

    authenticate(username=user, password=pwd)

    ilk

    Eğer authenticate, django setleri çağırdığınızda Kullanıcının hangi arka ucunu kullanacağını belirten backend özniteliği, daha fazla ayrıntı için buraya bakın https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.authenticate

    +2

    Yok Paulo sabit aldık. Benim durum olduğunu ben aşağıdaki ayarları unutmak benim aptal bir hata: AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend', 'socialregistration.contrib.facebook.auth.FacebookAuth') – Elisa

    1

    Yeni kaydedilen bir kullanıcı için aynı hatayı aldım.

    def attempt_login(self, email, password): 
        user = authenticate(username=email, password=password) 
        login(self.request, user) 
    
        return user 
    

    ben veritabanına kontrol ve Kullanıcı kayıt sonrasında oluşturuldu, ancak bu hata hala oradaydı.

    Ben çözdüm - kullanıcı giriş (e-posta) 30 karakterden uzun ve form alanı doğrulama yok. Kullanıcı adı, veritabanında get truncated olur ve bu nedenle kimlik doğrulaması, varolmayan giriş için çağrıldı.

    254 - karakter, e-posta alanının uzunluğudur.

    Çözüm:emailfield-max_length-r11092.patch

    1

    Sadece bu hata var ve kayıt işlemi oldu Çözümümün durumda olan bu yazı .. buldum. kullanıcı kayıt edildiğinde, benim API ve seri hale Yani api_view i elle böyle şifresinin hash vardı .. şifreyi karma değildi ..

    from django.contrib.auth.hashers import make_password 
    
        # In the register api.. 
        @ensure_csrf_cookie 
        @api_view(['POST']) 
        def register_api(request): 
    
         # Anywhere before the serializer 
         request.DATA['password'] = make_password(request.DATA['password']) 
    
         # Then the serializer 
         serializer = RegisterSerializer(data=request.DATA) 
    
         # ... etc.. Note that if you want to login after register you will have 
         # to store the initial password is some buffer because.. authentication 
         # the none hashed version.. then 
          authenticate(username=request.DATA['username'], password=someBuffer) 
    

    Umut birisi yardımcı olduğunu ..

    İlgili konular