Twilio - 生成6位数的随机数

时间:2016-10-21 14:38:45

标签: python django twilio

我打算在我的Django应用程序中集成twilio进行双因素身份验证。

现在,我已经安装了twilio python模块并向我的号码发送了一些随机消息。

下一步是让我发送一些随机的6位数字,这些数字在银行应用程序或谷歌双因素身份验证中完成。

如何在DJango应用程序中生成这些数字?

5 个答案:

答案 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;
    }