2016-10-24 8 views
3

내 웹 사이트에 Django two-factor-auth을 구현 중이며 2-FA로 보호되는 일부보기 및 일부보기가없는 것이 좋습니다.Django 이중 인증, 특정보기에 2FA가 필요합니다.

그렇게하기 위해 데코레이터 @otp_required를 사용하면 좋지만 불행히도 사용자에게 자격 증명을 다시 입력하도록 요청합니다 (사용자 세션을 처리하기 위해 등록 모듈을 사용합니다).

사용자가 토큰을 입력하도록 요청하기 위해 양식을 해킹하는 데 좋은 방법을 제공 할 수 있습니까 (기본적으로 양식의 단계를 건너 뜁니다)?

고마워, 내가 아주 깨끗한 그것을 할 수있는 방법을 찾아 치료하는 사람들을 위해

답변

1

.

트릭은 two_factor_authentication 모듈의 core.py 모듈에서 LoginView 클래스를 대체하는 것이 었습니다. 그렇게, 귀하의 의견에 가서 다음 코드를 삽입하기 위해

: 기본적으로

class CustomLoginView(LoginView): 

    form_list = (
     ('token', AuthenticationTokenForm), 
     ('backup', BackupTokenForm), 
    ) 

    def get_user(self): 
     self.request.user.backend = 'django.contrib.auth.backends.ModelBackend' 
     return self.request.user 

을, 나는 '인증'단계를 지우고 현재 사용자를 반환하기 위해() 메소드 나 get_user를 오버라이드 (override) . 백엔드를 지정해야합니다. 그렇지 않으면 Django에서 오류가 발생합니다.

이제 LoginView 대신 해당 클래스를 사용하려면 ur_ls에 가서 two_factor.urls를 포함하기 전에 다음 행을 삽입하십시오.

url(r'^account/login/$', tradingviews.CustomLoginView.as_view(), name='login'), 

그게 전부 야!