2016-10-24 8 views
3

私はDjango two-factor-authを自分のWebサイトに実装していますが、私は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 

を、私は「AUTH」ステップを消去し、現在のユーザーを返すために)(メソッドのGET_USERをオーバーライドします。 バックエンドを指定する必要があります。そうでない場合、Djangoはエラーを発生させます。

LoginViewの代わりにそのクラスを使用するには、URLにアクセスしてtwo_factor.urlsを含める前に次の行を挿入します。

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

これだけです!

関連する問題