2016-10-06 2 views
2

저는 Django와 django-oauth-toolkit을 사용하여 Auth0 용 일반 OAuth2 Authorization Server을 만듭니다. Django 서버를 사용하여 Auth0을 중개자로 사용하여 여러 다른 서비스에 대한 사용자를 인증 할 계획입니다.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에서 발급 한 토큰과 연결된 장고 사용자는 어떻게 액세스 할 수 있습니까?

답변

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', 
    '...', 
) 
관련 문제