最近几天我一直在研究Django 2因素。我终于到了使Django Twilio电话验证生效的地步。这是工作代码...
from authy.api import AuthyApiClient
from django.conf import settings
from django.shortcuts import render, redirect
from .forms import VerifyForm, TokenForm
authy_api = AuthyApiClient(settings.ACCOUNT_SECURITY_API_KEY)
def SetupView(request):
if request.method == 'POST':
form = VerifyForm(request.POST)
if form.is_valid():
request.session['phone_number'] = form.cleaned_data['phone_number']
request.session['country_code'] = form.cleaned_data['country_code']
authy_api.phones.verification_start(
form.cleaned_data['phone_number'],
form.cleaned_data['country_code'],
via=form.cleaned_data['via']
)
return redirect('token_validation')
else:
form = VerifyForm()
return render(request, 'registration/verify.html', {'form': form})
def token_validation(request):
if request.method == 'POST':
form = TokenForm(request.POST)
if form.is_valid():
verification = authy_api.phones.verification_check(
request.session['phone_number'],
request.session['country_code'],
form.cleaned_data['token']
)
if verification.ok():
request.session['is_verified'] = True
return redirect('verified')
else:
for error_msg in verification.errors().values():
form.add_error(None, error_msg)
else:
form = TokenForm()
return render(request, 'registration/token_validation.html', {'form': form})
def verified(request):
if not request.session.get('is_verified'):
return redirect('phone_verification')
return render(request, 'registration/verified.html')
使用上面的代码,并在我的settings.py文件中指定ACCOUNT_SECURITY_API_KEY,是获取上面的代码并将4位数字的代码传递到我的手机所需要的全部。进度...
但是,我真正要完成的工作是利用AUTHY应用程序提供登录代码。...我看了下一页... https://www.twilio.com/docs/authy/quickstart/two-factor-authentication-python-django#linkcode并且该代码未加载在此页面上...没有人有经验或知道在哪里寻找,以便我可以让Django与Authy一起使用并获取每20秒更改一次的代码,而不是上面显示的4位数字的示例?预先感谢您的任何想法。
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
这里的问题是您正在使用verification API,这是一次电话号码验证,并且不使用Authy应用。
相反,您需要APIs for one time passwords。我不知道您链接的教程有什么问题,但是可以在以下位置找到该应用程序的所有代码:https://github.com/TwilioDevEd/account-security-quickstart-django。
让我知道是否有帮助。