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 ID
,Client 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.代码配置
-
base.py
中的THIRD_PARTY_APPS
中添加配置: 其他第三方配置可登录如下网站查看"allauth.socialaccount.providers.github"
-
此时在页面点击
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
-
当然除了授权码模式,还有:简化模式,密码模式,客户端模式,扩展模式。如果想了解:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库