• Django使用Cookiecutter 结合阿里邮箱推送实现注册短信验证


    Django使用Cookiecutter 结合阿里邮箱推送实现注册短信验证

    • 使用Cookiecutter能快速搭建模版。
    • 之所以使用阿里邮件推送因为每天可以免费发送200条。

    1.准备工作:

    2.网页配置:

    • 进入邮箱推送控制台,点击发信域名,并新增域名:

      这里我命名:
      	email.[你申请的域名]
      
    • 点击配置:

      以上状态在刚创建完配置为未验证。以上4项需要在域名控制台,点击解析,进行配置。

    • 域名解析设置:

      按上图进行配置,大概几分钟状态就验证通过

    • 新建发信地址:

      邮件推送控制台页面点击发信地址

      点击确定,然后点击设置SMTP密码。自行设置密码

    3.代码配置:

    • 因使用Cookiecutter 相关功能代码已实现只需更改配置 ,.env中存放邮箱配置

      # 发送邮件配置
      DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
      DJANGO_EMAIL_HOST=smtpdm.aliyun.com
      DJANGO_EMAIL_USE_SSL=True
      # 确保服务器防火墙打通465端口
      DJANGO_EMAIL_PORT=465
      
      DJANGO_EMAIL_HOST_USER=发信地址
      DJANGO_EMAIL_HOST_PASSWORD=你设置SMTP密码
      DJANGO_DEFAULT_FROM_EMAIL=发信地址
      

    第三方账号注册和登录

    • 这里以github为例

    1.网页配置

    • 登录github,点击settings,然后点击Developer settings,再点击OAuth Apps,新建应用:

    • Client IDClient Secret复制,添加数据库:

      insert into socialaccount_socialapp (id,provider,name,client_id,secret) values (1,"GitHub","GitHub",[Client ID],[Client Secret]);
      
    • 添加关联表socialaccount_socialapp_sites

      insert into socialaccount_socialapp_sites (id,socialapp_id,site_id) values (1,1,1);
      
      

    2.代码配置

    • 此时在页面点击github,会跳转当前注册是否与GitHub关联,如下图:

    • 这样就可以实现第三方账号注册。然后登录

    理解OAuth 2.0协议

    1.简述

    • OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0,OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。百度百科

    • 上面通过我们的应用,让GitHub授权登陆其实就是用到了OAuth2.0协议,在OAuth2.0协议之前需要理解如下意思:

      Third-party application 第三方应用程序,客户端(Client),我们开发客户端
      HTTP service HTTP服务提供商,提供登陆信息的一方。
      User Agent 用户代理,浏览器
      Authorization Server 认证服务器,就是HTTP服务提供商撞门用来处理认证服务器
      Resource Server 资源服务器,即HTTP服务提供商存放用户资源服务器
      • 大概流程是:应用登录到授权层--->HTTP服务提供商,授权层有一个token(指定权限范围和有效日期),服务提供商根据token提供的范围和有效期--->向客户端开放一部分权限
    • OAuth2.0协议流程:

    Resource Owner   client 是客户端
    Resource Server 为HTTP服务提供者
    Authorization Server 为HTTP服务提供者进行认证
    
    # 整个过程:
    	A 请求授权 ----> B 获取HTTP服务提供者的授权信息
    	C 客户端使用获取授权向认证服务器申请token令牌
    	D 认证服务器同意后将token令牌返回客户端
    	E 客户端携带Token令牌获取资源服务器的资源
    	F HTTP服务提供者将资源发送给客户端
    	# 需要注意的是 C,D,E,F这都是在后端实现,我们是看不到的。
    
    • 当然授权模式有很多,经常使用是授权码模式

    2.授权码模式工作模式:

    • 这里以我们应用访问GitHub为例:
    我们访问客户端,通过输入用户名密码,点击GitHub登录,然后页面redirect到GitHub认证服务,用户输入GitHub的用户名密码来登录GitHub认证服务器。认证服务器给返回一个授权码。
    授权返回url参数:
    	*client ID    GitHub 生成client ID
    	redirect_uri   客户端注册重定向的uri
    	*response_type   模式,咱们是授权码模式,为code
    	scope 可设置返回信息,如用户名,邮箱
    	state   将资源原样返回
    	# 注:标记"*"的表示必选项,授权码是有有效期,而且时间会很短
    4.当客户端获取授权码,使用redirect_uri上的url 去 服务提供者申请Token
    5.认证服务器核对授权码和uri 将会向客户端发送access Token.这只是第一次登陆时候需要,后续登陆只需要Refresh Token去更新Token
    
  • 相关阅读:
    前端开发-接口管理
    elementui_5(查看报告功能的开发)
    elementui_4(选择用例功能的开发)
    elementui_3(编辑、删除功能的开发)
    elementui_2(添加功能的开发和loading的开发)
    elementui_1(整个table页面的开发)
    vue基础(axios)
    vue基础
    python ddt数据驱动二(json, yaml 驱动)
    ffmpeg文档15-编码器
  • 原文地址:https://www.cnblogs.com/xujunkai/p/12697397.html
Copyright © 2020-2023  润新知