私はこのコードを持っている:DjangoのログインはAttributeError:「AnonymousUser」オブジェクトが属性「_meta」を持っていない
from django.contrib.auth import logout, login, authenticate
...
if User.objects.filter(email=email).exists():
existing_user = User.objects.get(email=email)
user = authenticate(username=existing_user.username, password=existing_user.password)
login(request, user)
ドキュメントによると、これは動作するはずですが、それは、それは私にエラーを与えていません。
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user) AttributeError: 'AnonymousUser' object has no attribute '_meta'
Django Rest FrameworkでJWT認証を使用しているために問題が発生する可能性がありますか?これはちょうどdjangoで動くAPIなので、別のシナリオだと思いますが、何が問題の原因になっているのか分かりません。
完全なトレースバックを表示します。しかし、あなたのコードは**意味がありません**; 'authenticate'は、データベースに保存された*ハッシュ値*パスワードと比較することによって、ユーザを取得します。ユーザーを別々に取得する必要はなく、ここでは 'authenticate'は常に*失敗します。 –
こんにちは@DanielRoseman。それでは、パスワードを手に入れずに、ビューでユーザーにログインするにはどうしたらいいですか?アプリは私にFacebookのトークンを送って、FbのAPIを使ってトークンを確認した後、電子メールを受け取って、それがすでに存在するかどうかを確認します(残っているコードは貼り付けられています)。そのユーザーにログインします。私は 'authenticate'と' login'を使って解決すると思っていましたが、今はそうではありません。 – alejoss
独自の認証バックエンドを実装して、パスワードなしでユーザーを認証することができます。トークン認証の例は、https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#writing-an-authentication- backendにあります。 –