
3.5 登录验证

在开发动态Web程序的过程中,经常需要开发登录验证系统。在本节的内容中,将详细讲解在Flask Web程序中开发登录验证系统的过程。
3.5.1 验证两次密码是否相同
在下面的实例中,演示了在Flask Web表单程序中验证两次密码是否相同的过程。
源码路径:daima\3\3-5\yanzheng\
1)编写文件yanzheng.py实现一个简单的用户登录的逻辑处理,具体实现流程如下所示。
• 路由处理两种请求方式:GET和POST,然后判断请求方式。
• 获取请求的参数(从表单中读取数据)。
• 判断两次输入的密码是否相同。
• 如果在表单中输入的数据合法,则返回成功提示。
文件yanzheng.py的主要实现代码如下所示。


2)在模板文件form.html中遍历flash消息,具体实现代码如下所示。

执行后不但能够验证在文本框中输入的数据是否合法,而且也可以验证两次输入的密码是否一致。例如输入用户名而两次密码不一致时的执行效果如图3-15所示。

图3-15 执行效果
3.5.2 注册验证和登录验证
在下面的实例中将分别实现一个简单的会员注册系统和登录系统,这两个系统是独立的,并没有使用数据库保存数据。
源码路径:daima\3\3-5\WTF\
1. 用户注册验证
1)编写文件register.py,通过RegisterForm分别验证各注册表单中数据的合法性,如果所有的数据合法,通过register()显示用户提交的注册数据。文件register.py的主要实现代码如下所示。



2)注册页面模板文件register.html的具体实现代码如下所示。

在浏览器输入“http://127.0.0.1:5000/register”后会显示一个注册表单,注册数据合法后会在控制台显示注册信息。执行效果如图3-16所示。

图3-16 执行效果
2. 用户登录验证
1)编写文件login.py,通过LoginForm验证登录表单数据的合法性,包括用户名和密码。如果所有的数据合法,通过login()在控制台显示成功提示信息和用户提交的登录数据。文件login.py的主要实现代码如下所示。

2)模板文件login.html的具体实现代码如下所示。

在浏览器输入“http://127.0.0.1:5000/login”后会显示一个登录表单,如果登录数据不合法则会显示对应的提示信息,如果合法则会在控制台显示登录信息。执行效果如图3-17所示。

图3-17 执行效果