2011-11-30 5 views
6

を持っていない、次のエラーを得た:は 'AnonymousUser' オブジェクトは、ジャンゴ・socialregistrationを使用した無属性 'バックエンド'

'AnonymousUser' object has no attribute 'backend' 

私はURLを接続Facebookのをクリックしてどのように、

  1. 私はFacebookを利用してログインしてください。だから、私は許可を求めた、私は認めた。
  2. その後、私は自分のサイトにリダイレクトされます。セットアップを依頼します。私はユーザーと電子メールアドレスを提供します。

トレースポイント:

  • 私が提出した後は、上記のようなエラーが発生しました

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

    間違っているものを、誰を知っていますか?

  • +0

    あなた'AnonymousUser'クラスのオブジェクトには' backend'属性がありません。これは間違っています。 – Tadeck

    +0

    私はそれを知っています。私の質問は、django-socialregistrationが有効なユーザーを取得できなかった理由ですが、AnonymousUserを取得します – Elisa

    +0

    完全なtracbackを貼り付けることができますか? – meson10

    答えて

    8

    男ああ、私は基本的にあなたがauthenticateを呼び出す

    authenticate(username=user, password=pwd)

    最初

    、ジャンゴ・セットを呼び出すことなく

    self.login(request, user) 
    

    を呼び出している、すべての時間をこのエラーを取得するために使用ユーザーのバックエンド属性。使用するバックエンドについては、こちらを参照してください。 https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.authenticate

    +2

    いいえパウロ、それは私の場合ではありません。私の場合は、私が設定を忘れるという私の愚かな間違いです:AUTHENTICATION_BACKENDS =( 'django.contrib.auth.backends.ModelBackend'、 'socialregistration.contrib.facebook.auth.FacebookAuth') – Elisa

    1

    新たに登録したユーザーに同じエラーがありました。

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

    私はデータベースにチェックインし、ユーザーは登録後に作成されましたが、このエラーはまだ残りました。

    ユーザーのログイン(電子メール)が30文字を超えていて、フォームフィールドに検証がないとわかりました。ユーザー名はデータベースのget truncatedになるため、存在しないログインに対して認証が呼び出されました。

    254 - 文字は電子メールフィールドの推奨長です。

    ソリューション:emailfield-max_length-r11092.patch

    1

    私はこのエラーを持って、私のソリューションは、ケースにあった...この記事を見つけた登録プロセスにありました。ユーザーが登録した時、私のAPIおよびシリアライザは、パスワードをハッシュいませんでした.. api_viewに私は手動でこのようなパスワードをハッシュする必要がありました..だから

    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) 
    

    誰かを役に立てば幸い..

    関連する問題