项目简介:为了方便日后密码遗忘进行修改或者进行消息推广等,现在各大网站在注册的时候总是免不了填写邮箱验证邮箱的流程。本门课程将通过使用 SendCloud 提供的 API 来实现一个本地版的邮箱认证过程。

一、实验简介

一定有人好奇通过链接进行邮箱认证背后的原理是什么,事实上它的原理非常简。

本门课程将通过使用 SendCloud 提供的 API 来实现一个本地版的邮箱认证流程。

1.1 课程知识点

通过本次课程的学习,我们将接触到以下知识:使用 SendCloud 的邮件 API 给指定邮箱发送邮件。

使用 MySQLdb 模块对 mysql 数据库进行操作。

使用 Requests 模块发送 HTTP POST 请求。

使用 Flask 框架实现简单的网页后台。

使用 hashlib 模块实现对指定字符串的加密处理。

使用 random 和 string 模块生成指定长度的随机字符串。注意:本次课程主要使用语言是 Python 2.7,如果没学过 Python 的同学可以先移步到课程《Python快速教程》学习一些基础的 Python 语法,再回来继续进行本课程。

1.2 实验主要流程介绍邮箱验证原理。

注册 SendCloud。

配置数据库 MySQL。

编写后台程序。

编写前端程序。

1.3 所需安装模块

需要安装 Flask, requests 和 MySQLdb 模块。

$ sudo pip install flask

$ sudo pip install requests

安装 MySQLdb 模块的过程要琐碎一些,流程如下:

首先使用 apt-get 更新软件包:

$ sudo apt-get update

$ sudo apt-get upgrade温馨提示:软件包更新过程可能会有些慢,请耐心等待。

然后再安装包 libmysqlclient-dev ,否则会出现 'mysql_config not found' 的错误。

$ sudo apt-get install libmysqlclient-dev

之后再安装包 python-dev ,否则会出现 'Python.h not found' 的错误。

$ sudo apt-get install python-dev

以上软件包都安装好之后,就可以顺利安装 MySQLdb 模块包了。

$ sudo pip install mysql-python注意:以上安装流程仅适用于实验楼虚拟机环境,若在个人电脑上进行配置,请按照个人实际情况选择安装。

1.4 效果截图

最终效果如下图,因为主要是为了学习 SendCloud 的邮件 API ,以效率为先,界面就做的很简单了,大家在学习过程中完全可以按照自己的想法去实现登录界面,然后截图到实验报告里。

填写所需信息之后点击提交。

数据库生成相应记录, verificatin_status 一栏数值为 0 表示还未验证。

在 SendCloud 的管理界面中查看邮件投递状态。

验证邮件一般在一分钟之内能送达邮箱,如果长时间没有收到提示可以查看一下垃圾邮件。

复制链接输入到实验楼虚拟机浏览器中进行访问,完成认证。

此时数据库中 verificaitn_status 的值也变为 1 ,这表明该用户邮件已进行验证。

二、邮箱验证基本原理

邮箱认证的原理其实很简单,基本流程如下:用户在表单页面上填写了表单,点击提交的时候通过 HTTP POST 方法将这些信息发送给后台程序,后台接受这些信息并将其存储到数据库中。

由第一步我们已经获得了用户的一些基本信息,如用户名和邮箱等,然后就可以调用 SendCloud 的邮件 API 给指定用户邮箱发送验证邮件。验证的链接格式一般为 http://domain.com/verify?token=xxxxxx&authcode=xxxxxx ,其中 token是每个用户的唯一标识, authcode 是后台随机生成的验证码。

当用户点击验证链接的时候,浏览器对该链接进行访问,后台程序可以通过 HTTP GET 方法获取到链接中 token 和 authcode 两个参数的值,然后利用这个值对数据库进行查询,如果查询得到结果,则邮件验证成功,将数据库中相应的 verificatin_status 的值进行更新为 True。

当然这只是一个验证的基本思想,验证过程的安全问题以及其多用户情况下数据库操作的互斥等问题都需要更深入进行考虑的,但是我们这门课主要是学习使用 SendCloud 的邮件 API,因此只需要实现一个这样的基本流程就行。

另外综上所述, token 只要满足唯一性就行了,可以是很简单的数字,比如 1,2,3... ,但是出于不希望被用户轻易看破某些规律从而了解到后台当中的某些信息,通常我们可以采用 md5算法 进行加密,将用户ID、用户名和时间戳作为算法输入的明文,把输出所得的密文作为 token ; 而 authcode 则是一串随机的字符串。

本项目实现的完整教程和代码详解,可在实验楼中查看并在线完成,立即【开始实验】

更多Python经典项目:Python全部 - 课程

python认证教程_基于 Python+SendCloud 的邮箱认证相关推荐

  1. python的图书管理项目教程_基于python图书馆管理系统设计实例详解

    写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉! 这个项目不是我的作业, 只是无意中被拉进来了,然后就承担 ...

  2. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  3. python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

    Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium .Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozi ...

  4. python 英语分词_基于Python NLTK库进行英文文本预处理

    文本预处理是要文本处理成计算机能识别的格式,是文本分类.文本可视化.文本分析等研究的重要步骤.具体流程包括文本分词.去除停用词.词干抽取(词形还原).文本向量表征.特征选择等步骤,以消除脏数据对挖掘分 ...

  5. python回归算法_基于Python的函数回归算法验证

    看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归 回归方法就是寻找方差的最小值 y = kx + b xi, ...

  6. 基于python的微博_基于python编写的微博应用

    本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...

  7. python编码尺寸_基于Python批量生成指定尺寸缩略图代码实例

    这篇文章主要介绍了基于Python批量生成指定尺寸缩略图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近我们商城上架的应用越来越丰富了. ...

  8. cv2 python 获取斑马线_基于python的opencv图像处理实现对斑马线的检测示例

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...

  9. python词频作图_基于Python的词频分析与云图生成

    近期,学校对呼和浩特市第二中学学生特质进行了调查,具体题目为"用关键词描述一下二中学生的特质(尽量在20字以内)". 为了更好的展示调查结果,我们基于Python的jieba库和w ...

最新文章

  1. 服务器磁盘系统,服务器磁盘阵列与操作系统
  2. c语言上机报告之水仙花数,C语言上机报告之水仙花数..doc
  3. 任意手机虚拟按键增加方法
  4. wmsys.wm_concat的几个用法
  5. HDU_1847_基础博弈sg函数
  6. 逻辑回归算法识别Minst手写集
  7. 怎么自己做淘宝优惠券的网站?看完这个你就全懂了
  8. Javascript小程序 向浏览者问好(转)
  9. 从更高到更好 揭开2021阿里双11背后的技术亮点
  10. Ubuntu16.4打开优盘的错误,unnable to access
  11. 工具分享:pycharm-2019.1_windows正版最新(附下载链接)
  12. Meta分析和网状Meta分析速成班( 2019年12月28-29日 上海)
  13. 微软WIN7系统瘦身全攻略
  14. flask之修改蓝图的template_folder参数,模板路径的查找处理:
  15. 图划分软件Metis的使用
  16. 吕文哲:为什么我说EOS完爆以太坊,理由全在这里了
  17. 19种音频格式介绍及音质压缩比的比较 1
  18. python开发系统-Python
  19. 中兴VIVO陷眼纹技术之争:谁是复制者?
  20. 6部10层电梯程序,采用以太网通信 6部10层电梯程序,包含各个功能模块

热门文章

  1. 蓝凌LBPM平台,大公司流程数字化升级必选
  2. UltraEdit 27.0.0.24 中文版 — 文本代码编辑工具
  3. 快速剪辑视频,每个视频按秒数快速分割,并保留原声
  4. 第1部分 基础算法(提高篇)--第1章 贪心算法1425:【例题4】加工生产调度
  5. NXP JN5168 Zigbee 芯片烧录问题
  6. 瑞吉外卖第五天(套餐的增删改和手机端登录功能的实现)
  7. 项目实战-基于redis的内存数据库Medis(附源代码以及测试用例)
  8. 降低芯片设计创新门槛——从互联网成功经验看开源芯片生态发展
  9. 90.pygame游戏-玩个球(play the ball)最终版
  10. 分享 | NB-IoT智能井盖传感器