2017-06-20 16 views
1

confirm_login_allowedのユーザがAuthenticationFormを通過すると、リダイレクトすることは可能ですか?一度認証されたカスタム認証フォームをリダイレクトする - Django

例えば、私は

class LoginForm(AuthenticationForm): 

    def confirm_login_allowed(self, user): 
     if not user.is_active: 
      raise forms.ValidationError('There was a problem with your login.', code='invalid_login') 
     elif user.is_staff and not self.has_2fa(): 
      logger.info('is staff but does not have 2FA, redirecting to Authy account creator') 
      return redirect('admin/authy_me/authenticatormodel/') 
     elif user.is_staff and self.has_2fa(): 
      logger.info("is staff and 2FA enabled") 
     elif not user.is_staff and not self.has_2fa(): 
      logger.info('is not staff and does not have 2FA') 

のみ検証エラーのためにconfirm_login_allowedが使用されているかを実行してフォームにユーザーをリダイレクトしようとしていましたか?もしそうなら他の方法がありますか?

答えて

0

答えを得ました。 confirm_login_allowedにリダイレクトを設定することはできません。カスタムビューを作成してそこにリダイレクトする必要があります。

def login(request): 
    if request.user.is_staff and not has_2fa(request): 
     logger.info('is staff but does not have 2FA, redirecting to Authy account creator') 
     return redirect('admin/authy_me/authenticatormodel/') 
    elif request.user.is_staff and has_2fa(request): 
     logger.info("is staff and 2FA enabled") 
    elif not request.user.is_staff and not has_2fa(request): 
     logger.info('is not staff and does not have 2FA') 

    defaults = { 
     'authentication_form': LoginForm, 
     'template_name': 'core/login.html', 
    } 

    return auth_login(request, **defaults) 
urls.py

とで、views.pyにおける例について

代わりfrom django.contrib.auth.views import loginインポートfrom app_name.views import loginをインポートし、次に追加

url(r'^login/?$', app_name.login, name="login") 
関連する問題