我正在我的网站上实现 Django 双重身份验证,我希望一些 View 受双重 FA 保护,而另一些则不 protected 。
为此,我使用装饰器 @otp_required 效果很好,但不幸的是,它要求用户再次输入他们的凭据(为了处理用户 session ,我使用了注册模块)。
您能否给我一个好的方法来破解表单,以便只要求用户输入 token (基本上跳过表单的一个步骤)?
非常感谢,
最佳答案
对于那些关心的人,我找到了一种非常干净的方法。
诀窍是覆盖 two_factor_authentication 模块的 core.py 模块中的 LoginView 类。
为此,请转到您的 View 并插入以下代码:
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'),
就是这样!
关于python - Django 双因素身份验证,需要对特定 View 进行 2FA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40214027/