2017-12-29 5 views
0

나는 django social auth의 초보자이다. social-auth-app-django을 사용하여 Microsoft Azure AD 사용자를 인증합니다. 인증 프로세스가 잘 작동하고 사용자 개체가 데이터베이스 내에 만들어집니다. 그러나 request.user는 뷰 내부에서 null을 returing합니다. 내가 관리자 또는 관리자를 사용하여 만든 다른 사용자로 로그인 할 때request.user returns Django social-auth-app-django

Settings.py

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'social_django', 
    # 'social.apps.django_app.default', 
] 

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'social_django.middleware.SocialAuthExceptionMiddleware', 
] 
TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates'),], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'social.apps.django_app.context_processors.backends', 
       'social.apps.django_app.context_processors.login_redirect', 

      ], 
     }, 
    }, 
] 
AUTHENTICATION_BACKENDS = (
    'social.backends.azuread.AzureADOAuth2', 
) 
#settings.py 
SOCIAL_AUTH_PIPELINE = { 
    'pipeline.new_users_handler' 
} 

보기

def home(request): 
    """Renders the home page.""" 
    assert isinstance(request, HttpRequest) 

    context = { 
     'title':'Home Page', 
     'year':datetime.now().year, 
     'request': request, 
     'user': request.user, 
    } 
    context_instance = RequestContext(request,context) 
    return render(
    request, 
    'index.html',context) 

request.user 잘 작동합니다. 이 문제는 소셜 인증을 통해 인증 될 때 발생합니다.

답변

1

당신은 사용자가 마지막

'social_django.middleware.SocialAuthExceptionMiddleware', 
에서 미들웨어이 추가

로그인하지 않은 때까지

def home(request): 
    context = { 
     'title':'Home Page', 
     'year':datetime.now().year, 
     'request': request, 
     'user': request.user, 
    } 
    return render(
    request, 
    'index.html',context) 

하지만 request.user는 null를 돌려줍니다 간단한 구문을 사용,이 모든 필요 없어요

끝에 템플릿을 추가하십시오.

'social_django.context_processors.backends', # <-- 
'social_django.context_processors.login_redirect', # <-- 
+0

Azure로 인증 한 후에도 request.user는 여전히 없음 –

+1

편집 된 ans를 확인하십시오 – Exprator

+0

이미 두 개의 conext 프로세서가 추가되었습니다. 미들웨어''social_django.middleware.SocialAuthExceptionMiddleware '를 추가하면, 이슈를 수정하지 못했습니다. –

관련 문제