2016-10-06 5 views
2

私はDjangoとdjango-oauth-toolkitを使用してAuth0用の汎用OAuth2 Authorization Serverを構築しています。 Auth0を仲介者として使用して、Djangoサーバーを使用して複数の異なるサービスに対してユーザーを認証する予定です。現在ログインしているユーザをdjango-oauth-toolkitトークンから取得するにはどうすればよいですか?

私は、アプリケーションが認証された後に呼び出されるビューを持っており、現在ログインしているユーザーの詳細を返すためにそのビューが必要です。

urls.py:

# Return current logged in user 
(r'^user/current/?$', 
'my_app.views.current_user.get_user', 
{}, 
'current_user'), 

ビュー/ current_user.py:

import json 
from django.http import HttpResponse 
from oauth2_provider.decorators import protected_resource 


@protected_resource() 
def get_user(request): 
    user = request.user 
    return HttpResponse(
     json.dumps({ 
      'username': user.username, 
      'email': user.email}), 
     content_type='application/json') 

request.user代わりにトークンが属するユーザの、AnonymousUserを返します。

django-oauth-toolkitによって発行されたトークンに関連付けられたDjangoユーザにアクセスするにはどうすればよいですか?

答えて

5

正しいミドルウェアと認証バックエンドをロードすると、says in the documentationのように、request.userが正しいユーザーを返します。

AUTHENTICATION_BACKENDS = (
'oauth2_provider.backends.OAuth2Backend', 
# Uncomment following if you want to access the admin 
#'django.contrib.auth.backends.ModelBackend' 
'...', 
) 

MIDDLEWARE_CLASSES = (
    '...', 
    # If you use SessionAuthenticationMiddleware, be sure it appears before OAuth2TokenMiddleware. 
    # SessionAuthenticationMiddleware is NOT required for using django-oauth-toolkit. 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'oauth2_provider.middleware.OAuth2TokenMiddleware', 
    '...', 
) 
関連する問題