2017-08-02 13 views
0

DRFビューでユーザーにログインしようとしています。Django Restフレームワークによるユーザーログイン

@list_route(methods=['post']) 
def login(self, request, *args, **kwargs): 

    login_form = LoginForm(request, data=request.data or None) 

    if login_form.is_valid(): 
     _login(request._request, login_form.get_user()) 
    else: 
     raise forms.ValidationError("login wrong") 
    return Response({}) 

上記のコードは例外なく実行されますが、実際にはログインしていないようです。

私は、ブラウザを更新すると、ユーザーがまだログインしていない。

どのように私は、ユーザーにログインすることができますか?

+0

あなたの '_login'メソッドはどうなりますか?コードを編集して質問を編集できますか? –

+0

@JohnMoutafisええ、あなたの勘は正しいです。私はdjango.contrib.auth.viewsからimport loginを_loginとして使用しました。 'django.contrib.auth.login'を使用したはずです – eugene

+0

これで@eugeneが修正されましたか? –

答えて

1

_login()メソッドが期待通りの効果を発揮していないようです。

あなたのコメントに言及しました。あなたが使用していた:

from django.contrib.auth.views import login as _login 

が、この方法:

ログインフォームを表示し、ログインアクションを処理

を。

あなたは(あなたがそうであるように)使用する必要があります。

from django.contrib.auth import login as _login 

た:

は、ユーザIDと要求でバッ​​クエンドを持続。この方法では、ユーザーはすべての要求に対して を再認証する必要はありません。
匿名セッション中に設定されたデータは、ユーザーのログイン時に保持されます。

2

セッションでユーザーをログに記録するためにDRFを使用しないでください。

SessionAuthenticationの後ろの数行に警告が表示されます。

+0

情報ありがとうございます。それについて知りませんでした – eugene

関連する問題