2012-09-15 1 views
1

등록하는 즉시 자동으로 사용자 로그인을 시도하고 있습니다. 그들은 단지 원하는 사용자 이름과 두 개의 일치하는 암호를 입력 했으므로 더 이상 마찰이없는 사이트에 대한 액세스 권한을 부여하고 싶습니다. 하지만 authenticate의 사용자 객체를 사용한 로그인에 대한 나의 현재보기가 작동하지 않습니다. 즉,보기가 등록 후 프로필 페이지로 리디렉션됩니다. 그러나 프로필 페이지는 @login_required 데코레이터로 보호되어 로그인에 실패했기 때문에 리디렉션됩니다. 나는 광범위하게 디버깅을하고 둘러 보았다.Django auth 백엔드 및 자동 로그인

제 3 자 등록 앱을 사용하는 것만 큼 생각할 수있는 모든 것을 시도했습니다. 사람들은 백엔드와 관련된 문제/특이성을 제안했지만, 왜 내가 등록, 인증 및 로그인을 한 번에 볼 수 없는지 알 수 없습니다.

views.py (관련 부분)

@login_required 
def user(request, user_id): 
    profile_user = User.objects.get(id=user_id) 
    context = RequestContext(request)  
    context['profile_user'] = profile_user 
    return render_to_response('profile.html', context) 


def register(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      new_user = form.save() 
      new_user = authenticate(username = request.POST['username'], 
            password = request.POST['password1']) 
      if new_user is not None: 
       login(request, new_user) 
       context = RequestContext(request)  
       context['user_id'] = new_user.id 
       context['new_user'] = new_user 
       url = '/user/%s/' % new_user.id  
       return HttpResponseRedirect(url) 
    else: 
     form = UserCreationForm() 
    return render_to_response("registration/register.html", {'form': form}, 
           context_instance=RequestContext(request)) 

어떻게이 처리합니까?

+0

나는 (인증() 및 로그인())와 같은 일을하고있어 내 응용 프로그램에서 잘 작동합니다. 미안하지만 이것은별로 도움이되지 않습니다 -하지만 당신은 확실히 바른 길입니다. –

+0

그것은 일종의 가슴 아픈 뉴스입니다. 왜냐하면 나는 이것을 해결하기 위해 모든 것을 시도했기 때문입니다. 그것은 개인적으로 느끼기 시작합니다. – KindOfGuy

답변

0

당신은 그것으로 작동하게 할 수 있습니다.

  1. 을 간단한 뷰를 통해 중간 템플릿에 리디렉션, 그것은 클라이언트 측에서 세션 쿠키를 설정합니다, 당신은에서 "등록 완료 로깅과 같은 메시지를 표시 할 수 있습니다 .. "
  2. 작은 3-5 초 시간이 지나면 프로필 페이지로 리디렉션됩니다. 이번에는 요청에 인증 쿠키가 전달되고 프로필 페이지에 액세스 할 수 있습니다.
+0

리디렉션하면 POST 변수를 가져갈 수 없습니다. 맞습니까? 따라서 암호는 다음보기가 로그인 할 때 사용하기 전에 손실됩니다. – KindOfGuy

+0

하지만 사용자는 이미 "register"뷰 내부에 로그인했을 것입니다. 중간 페이지를 "등록"한 후에 표시하면 세션도 쿠키로 클라이언트에 저장되고 브라우저는 브라우저에서 다음보기로 다시 전송됩니다. "사용자"의 경우. 사용자보기는 해당 세션 쿠키를 읽고 사용자를 인증하므로 암호가 필요하지 않습니다. – trappedIntoCode