2013-04-30 3 views
0

내가 AbstractBaseUser 확장을 중단하고 내가 로그인 기능을 작성하려고하지만 난이 오류가있어 : 당신이 CSRF를 사용하는 때마다 명심 views.py로그인 CSRF 확인에 실패했습니다. 요청이

def admin_login(request): 
username = password = '' 
if request.POST: 
    request.session.delete_test_cookie() 
    username = request.POST.get('username') 
    password = request.POST.get('password') 
    admin = Administrator.objects.all.get(username__exact=username) 
    if admin is not None and admin.check_password(password): 
     login(request, admin) 
     request.session['admin_id'] = admin.id 
     return redirect('dashborad') 
return render_to_response('admin/login.html',{ 'username': username}) 
+0

사용자 이름과 비밀번호가 맞습니까? 확인해 봤어 – NetStarter

+0

http://stackoverflow.com/questions/10388033/csrf-verification-failed-request-aborted – devnull

답변

4

CSRF verification failed. Request aborted. 

을, 당신은 필요 RequestContext의 인스턴스를 다시보기로 전달하십시오. 또한 양식에 {% csrf_token %}이 추가되어야합니다. 보기 코드에서

, 당신은 당신을 위해 올바른 컨텍스트를 incude 것입니다되는 render shortcut을 사용할 수 있습니다 : CSRF가 제대로 작동하려면

from django.shortcuts import render 

def admin_login(request): 
    # your normal code 
    return render(request, 'admin/login.html', {'username': username}) 

문서의 CSRF section을 위해 필요한 사항의 체크리스트를 가지고있다.

당신은 대신 자신의 논리를 작성하는 authenticate()를 사용해야합니다

from django.contrib.auth import authenticate 
user = authenticate(username='john', password='secret') 

함께 모든 퍼팅, 코드는 지금 : 나는 내장 messages framework 표시하기 위해 사용하고

from django.shortcuts import render 
from django.contrib.auth import authenticate 
from django.contrib import messages 

def admin_login(request): 
    """Logs in an admin user, redirecting to the dashboard""" 
    if request.POST: 
      username = request.POST.get('username') 
      password = request.POST.get('password') 

      user = authenticate(username, password) 

      if user is not None: 
       if user.is_active: 
        login(request, user) 
        request.session['admin_id'] = user.id 
        return redirect('dashboard') 
       else: 
        # do something because user was not active 
        messages.add_message(request, messages.ERROR, 'User Inactive') 
        return render(request, 'admin/login.html') 
      else: 
       # password/username combination was wrong 
       messages.add_message(request, messages.ERROR, 'Invalid Credentials') 
       return render(request, 'admin/login.html') 
    else: 
     return render(request, 'admin/login.html') 

오류 메시지

+0

고맙습니다 –

관련 문제