2011-04-10 9 views
3

장고 응용 프로그램이 있고 고유 한 인증 유효성 검사를 추가하고 사용자가 만료되었는지 확인하고 싶습니다 (일부 모델에서 만료 날짜를 확인하십시오). 사용자가 만료되면 적절한 메시지가있는 로그인 페이지에 ValidationError를 발생시키고 싶습니다. 그렇게하는 가장 좋은 방법은 무엇입니까?장고에 인증 유효성 검사를 추가하십시오.

감사합니다, 알렉스

+0

django.contrib.auth는 어디에 필요한 것입니까? – jbcurtin

+0

내 모델 중 하나에서 만료 날짜를 확인하고 로그인하는 동안 사용자가 만료 된 경우 적절한 오류를 제공해야합니다. – alexarsh

+0

좋습니다. 일반적으로 인증 모듈을 사용하여 애플리케이션보기에서 완료되었습니다. 또 다른 접근법은 objects.get()을 오버라이드하고 검사를 할 수있는 관리자를 만드는 것입니다. 인증 모듈을 확장하는 것의 유일한 주요 이점은 이미 필요한 것을 지원하는 쿠키 유효성 검사의 테스트되고 작동 가능한 구현이 이미 있다는 것입니다. 여기 좀 더 읽어보십시오 : http://docs.djangoproject.com/en/dev/topics/http/sessions/#using-sessions-in-views – jbcurtin

답변

2

당신은 정말 자신 만의 인증을 수행하려는 경우, 당신은 장고 문서에 custom backends을 읽어야합니다.

아마도 자신의 생각을하고 싶지는 않을 것입니다. 그것은 빤다. 정말. 정말 좋은 이유가없는 한, 당신은 당신 자신의 인증을 피해야합니다. 주된 이유는 내장 된 사용자 모델을 사용하지 않으면 많은 장고 응용 프로그램이 작동을 멈추게됩니다. 기존 소스에 대해 인증해야하는 경우 자체 백엔드를 작성하는 올바른 이유입니다. 그러나 함정이 있으며 사용자 정의 백엔드에 대해 내장 된 사용자 모델을 사용하려고 할 것입니다.

사용자 정의 인증을 수행하려는 이유를 알려주고 맞춤 백엔드를 작성하지 않고도 요구 사항을 달성 할 수 있도록 도와 줄 수 있습니다.

편집

좋아, 난 당신이 지금 무슨 뜻인지 이해 생각합니다. 원하는 (내가 생각하기에) 사용자 정의 인증 양식입니다. 우리는 현재 사용자 정의 양식을 사용합니다 (우연히 다른 부득이한 백엔드가 있음). 따라서 다음을 매우 쉽게 사용할 수 있어야합니다.

from myproject.myapp.forms import CustomAuthForm 

url(r'^login/$', 'django.contrib.auth.views.login', name='login', 
    kwargs={'template_name':'youproject/login.html', 'authentication_form':CustomAuthForm}), 

지금 귀하의 질문에 원래 사용자 정의 유효성 검사를하지 인증을 원하는 언급 한 것을 볼 수 :

from django.contrib.auth.forms import AuthenticationForm 
from django import forms 
from myproject.myapp.models import MyClass 

class CustomAuthForm(AuthenticationForm): 

    def clean(self): 
     cleaned_data = super(CustomAuthForm, self).clean() 
     user = self.user_cache # set by super class 
     if user.my_class.expired: 
      raise forms.ValidationError('This User has Expired!') 
     return cleaned_data 

그런 다음이 사용자 정의 인증 양식을 사용하여, 당신은 당신의 urls.py의 URL이 필요합니다. 귀하의 질문을 올바르게 읽지 못해서 사과드립니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 만료 된 사용자의 액세스를 비활성화하고 싶습니다. 사용자의 만료 날짜를 설정하는 관리자 사용자가 있습니다. 사용자가 만료 된 경우 로그인을 시도 할 때 적절한 메시지를 표시하고 싶습니다. – alexarsh

+0

@alex, 이렇게 사용자 정의 사용자 모델을 사용하고 있습니까? –

+0

아니요, django의 User 모델 – alexarsh

관련 문제