我正在我的网站上实现Django双因素身份验证,我希望有一些观点受到两个FA的保护,而另一些则不受。
为了做到这一点,我使用了装饰工具@otp_required,效果很好,但遗憾的是要求用户再次输入他们的凭证(为了处理用户会话,我使用注册模块)。
你是否能够给我一个很好的方法来破解表单,以便让用户输入令牌(基本上跳过表单的一步)?
非常感谢,
答案 0 :(得分: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'),
就是这样!