문제 :로그인 페이지에서 더 이동 실패, [장고-OTP]
"올바른을 입력하십시오 사용자 이름과 암호를 제공 한 후 다음과 같은 오류 메시지가 페이지를 로그인 다시 리디렉션하고
이메일과 비밀번호를 입력하십시오. 두 필드 모두 대소 문자를 구분할 수 있습니다. "
상세 :
나는 Django Two-Factor Authentication의 문서를 따랐다. 구성에서 뭔가를 놓쳐 버렸지 만 정확하게 알지 못합니다. Bellow는 내 코드의 세부 사항입니다.
settings.py
# in middle ware classes
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_otp.middleware.OTPMiddleware',
...
# in installed apps
...
'django_otp',
'django_otp.plugins.otp_totp',
'django_otp.plugins.otp_hotp',
'django_otp.plugins.otp_static',
'two_factor',
'otp_yubikey',
...
LOGIN_URL = reverse_lazy('two_factor:login')
TWO_FACTOR_PATCH_ADMIN = True
TWO_FACTOR_CALL_GATEWAY = 'two_factor.gateways.fake.fake'
TWO_FACTOR_SMS_GATEWAY = 'two_factor.gateways.fake.Fake'
TWO_FACTOR_QR_FACTORY = 'qrcode.image.pil.PilImage'
LOGIN_REDIRECT_URL = reverse_lazy('two_factor:profile')
AUTHENTICATION_BACKENDS = ('myapp.backends.EmailAuthBackend',)
AUTH_USER_MODEL = 'users.User'
OTP_LOGIN_URL = LOGIN_URL
로거도 잘
urls.py에게
url(r'', include(tf_urls + tf_twilio_urls, 'two_factor')),
및 에서 찾고있다 views.py
@otp_required()
def home(request):
# some logic with HTTP response
참고 : 나는 내 응용 프로그램에서 사용자 정의 사용자 모델을 가지고 그리고 난 분명히 너무 해당 파일을 붙여 넣기하고이 질문에 추가 admin.py에서 그들을 등록. 내가 잘못 가고 어디
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from apps.users.models import User
from django import forms
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = User
class MyUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
def clean_username(self):
username = self.cleaned_data['username']
try:
User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
add_form = MyUserCreationForm
# fieldsets = UserAdmin.fieldsets + (
# (None, {'fields': ('extra_field1', 'extra_field2',)}),
#)
admin.site.register(User, MyUserAdmin)
제안하십시오. 그리고 내가별로 명확하지 않으면 알려줘. 감사!
감사합니다. LOGIN_URL은 문서에 따라 두 요소로 라우팅됩니다. 다른 로그인 경로는 없습니다. 사용자 정의 사용자 모델이 있고 django-auth를 사용하지 않습니다. 그래서 내가 이것을 가지고있다 AUTH_USER_MODEL = 'users.User' 나는 이것이 좋은 생각이 아니라는 것을 알고 있지만 나는 사용자 정의 모델을 사용하도록되어있다. – Fakhir
좋아, 이해했다. django 버전과 사용자 정의 사용자 모델 작성 방법을 알려주십시오. – NONAMA
예, 장고 버전은 1.5.1입니다. 사용자 모델은 AbstractBaseUser에서 상속됩니다. 이 모델에 대한 사용자 정의 관리자도 정의했습니다. admin.py는 질문의 세부 사항입니다. AUTH_USER_MODEL은 settings.py에 정의되어 있습니다. – Fakhir