我打算在我的Django应用程序中集成twilio进行双因素身份验证。
现在,我已经安装了twilio python模块并向我的号码发送了一些随机消息。
下一步是让我发送一些随机的6位数字,这些数字在银行应用程序或谷歌双因素身份验证中完成。
如何在DJango应用程序中生成这些数字?
答案 0 :(得分:8)
除了Matthias'回答(我赞成他的回答); Django为此提供了一个快捷功能:
from django.utils.crypto import get_random_string
get_random_string(length=6, allowed_chars='1234567890')
更具可读性和难忘性。
如果你真的担心这个字符串的随机性,你可能想要使用random module from pycrypto,因为编程语言中随机函数的标准库实现不是" random"足以应对加密和安全问题。
答案 1 :(得分:5)
您可以使用random.choice
确定每个数字。 choice
将为您提供给定序列中的一个元素。
代码可能如下所示:
import random
pin = ''.join(random.choice('0123456789') for _ in range(6))
答案 2 :(得分:1)
你也可以
import random
random.SystemRandom().randint(100000,999999)
答案 3 :(得分:0)
Twilio开发者传道者在这里。
有一些很棒的答案可以帮助你生成一个随机的6位数字符串,但我只是想再添加一个建议。
Authy是Twilio的一部分,提供双因素身份验证作为服务。它支持通过SMS发送代码(通过Twilio发送),生成Authy application中的代码甚至双因素身份验证,而无需使用Authy OneTouch将应用程序/短信中的代码复制到登录屏幕。您只需3次API调用即可实现整个2FA流程。
how to use Authy with Flask上有一个教程,我确信你可以翻译成Django。
让我知道这是否有帮助。
答案 4 :(得分:0)
rand(1000,9999); == 4位数字
rand(100000,999999); == 6位数字
$client = $this->_initTwilioClient();
$fromNo = $this->_helperPot->getTwilioPhone();
$code = rand(1000, 9999);
try {
$result = $client->messages->create(
$toNo,
[
'from' => $this->_helperPot->getTwilioPhone(),
'body' => "Verification code: $code"
]
);
$output = [];
$output['status'] = "success";
$output['code'] = $code;
return $output;
} catch (\Exception $e) {
$output = [];
$output['status'] = "failure";
$output['message'] = $e->getMessage();
return $output;
}