ax3otp Auth是一个非常简单的Django库,用于使用HTOP准则生成和验证一次性密码。

AX3-OTP-Auth的Python项目详细描述


AX3 OTP身份验证

ax3otp Auth是一个非常简单的Django库,用于使用HTOP准则生成和验证一次性密码。在

安装

从PyPI软件包安装Axes很容易:

$ pip install django-axes

安装包后,需要配置项目设置。在

1。ax3_OTP添加到您的INSTALLED_APPS中:

^{pr2}$

2。ax3_OTP_Auth.backends.OTPAuthBackend添加到AUTHENTICATION_BACKENDS的顶部:

AUTHENTICATION_BACKENDS = [
    'ax3_OTP_Auth.backends.OTPAuthBackend',

    # Django ModelBackend is the default authentication backend.
    'django.contrib.auth.backends.ModelBackend',
]

3.将以下内容添加到网址.py公司名称:

urlpatterns = [
    path('OTP-Auth/', include('ax3_OTP_Auth.urls', namespace='otp_auth')),
]

4.创建模板的html按钮:

<button class="js-otp-auth" type="button" otp-login="{% url 'otp_auth:start' %}" otp-redirect="{% url 'login' %}">
    Login
</button>

5。为打开的OTP窗口创建Javascript:

$(() => {
    $('.js-otp-auth').on('click', function () {
        let redirect = $(this).attr('otp-redirect');
        let OTPLoginUrl = $(this).attr('otp-login');

        let width = 420;
        let height = 470;
        let top = (screen.height / 2) - (height / 2);
        let left = (screen.width / 2) - (width / 2);

        window.open(`${window.origin}${OTPLoginUrl}?redirect=${redirect}`, '_blank', `location=yes, scrollbars=yes, status=yes, width=${width}, height=${height}, top=${top}, left=${left}`);
    });
});

配置

如果需要为整个管道传递任何参数,可以使用OTP_AUTH_PARAMS

`OTP_AUTH_PARAMS = ['param']`

如果需要更改生命周期缓存值,可以使用OTP_AUTH_TTL

`OTP_AUTH_TTL = 60 * 60 * 5  # 5 minutes`

如果您需要更改短信:

`OTP_AUTH_MESSAGE = 'Utiliza {} como código de inicio de sesión.`

配置允许的国家/地区列表: 哥伦比亚=57 阿根廷=54 玻利维亚=591 智利=56 哥斯达黎加=506 古巴=53 多米尼加共和国=809 厄瓜多尔=593 危地马拉=502 墨西哥=52 秘鲁=51

OTP_AUTH_COUNTRIES_CODES = [57, 54]

使用以下变量更改颜色、品牌名称和徽标:

OTP_PRIMARY_COLOR = '#eb6806'
OTP_BACKGROUND_BTN = '#eb6806'
OTP_BACKGROUND_BTN_HOVER = '#000'
OTP_COLOR_TEXT_BTN = '#fff'
OTP_COLOR_TEXT_BTN_HOVER = '#fff'
OTP_BRAND_NAME = 'Axiacore'
OTP_BRAND_IMG = 'user-relative-path'

NSN配置

AX3 OTP使用NSN AWS服务发送消息,请使用以下策略创建组和AIM用户:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish",
                "sns:SetSMSAttributes",
                "sns:GetSMSAttributes"
            ],
            "Resource": "*"
        }
    ]
}

将AIM用户凭据设置为您的设置:

OTP_AUTH_AWS_ACCESS_KEY_ID = ''
OTP_AUTH_AWS_SECRET_ACCESS_KEY = ''
OTP_AUTH_AWS_DEFAULT_REGION = 'us-west-2'

认证和授权

经过身份验证的用户需要一个OTP,这个OTP是由AWS SNS服务发送的,一旦代码有效,系统将返回一个令牌,该令牌必须用于获得请求的电话号码。为此,您可以使用“获取手机号码”:

hotp = HOTP(session_key=request.session.session_key)
phone_number = htop.get_phone_number(code='123')

自定义短信网关

使用函数路径将OTP_CUSTOM_SMS_GATEWAY设置为您的设置,并且该函数必须是receivecountry_codephone_number和{}

OTP_CUSTOM_SMS_GATEWAY = 'app.utils.send_sms'

风格风格

对于开发而言,在提交任何更改之前,porpus必须编译SASS文件。在

从此链接安装节点:

https://nodejs.org/en/

然后安装sass

$ sudo npm install -g sass

它要求你输入密码,写下电脑用户的密码。在

编译SASS

要更改网页的样式,您需要编辑Sass的文件和 然后在项目的根文件夹上运行此命令,将其编译为CSS:

$ sass --watch ax3_OTP_Auth/static/otp_auth/sass/styles.sass ax3_OTP_Auth/static/otp_auth/css/styles.css

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Gson类中的java验证错误   If和elseif之间的java差异?   字典Java8地图。输入比较器   java连接到远程计算机以获得WMI支持   java如何使用改型处理JSON对象中的空值   在Java中使用Comparator时不可编译的源代码   java将Jar添加到JSP的运行时路径   带有随机对象的while循环的java大O时间复杂性   java可以在不考虑参数的情况下模拟方法吗?   java我有一个简单的代码,它不工作。无法修复错误“println”   向eclipse添加Xively java库   java是否可以启用本机代码的缓存?   全局变量如何在Java中的所有类之间共享要使用的语言环境?   Java内存游戏如何翻转单个卡?