实现一个登录功能
实现的功能
在第2版的基础上进行优化:\
VerificationCode(验证码储存库):
增加时间字段ExpirationTime数据类型int用于储存验证码的过期时间,增加次数字段time用于储存验证的次数,用于判断用户是否在发送验证码之后进行验证
SignInList(登录列表)
增加ExpirationTime储存过期时间,如果用户发送请求的时间超过过期时间,则视为用户掉线,需要重新登陆.
名称 | 数据类型 |
---|---|
id(主键) | int |
name(唯一) | string |
password | string |
Email(唯一) | string |
名称 | 数据类型 |
---|---|
id (主键) | int |
身份码 | string |
ExpirationTime | int |
解释:身份码为随机字符串,用于对用户操作是进行身份验证,ExpirationTime储存过期时间,如果用户发送请求的时间超过过期时间,则视为用户掉线,需要重新登陆.
名称 | 数据类型 |
---|---|
id | int |
操作 | string |
time | string |
名称 | 数据类型 |
---|---|
string | |
Verification | int |
ExpirationTime | int |
time | int |
ExpirationTime储存验证码过期时间,如果用户验证时间超过ExpirationTime则验证无效
每次只查询最后一条匹配的数据(最新生成的验证码数据)
特殊情况:
9. 重新提交:如果验证码生成后,该用户未进行任何验证(time=0),则生成相同的验证码,并告知用户,如果之前有验证失败(time>0),就生成不同的验证码.避免某些用户在5分钟内没法收到验证码的情况.
为确保用户的身份与登录状态,我们使用身份验证功能来实现
/index
定义一个index页面包含两个按钮login(注册)和sign up(登录) 点击login进入注册页面,点击sign up进入登录页面
index/login (1).邮箱验证
(2)注册:
注册表单:
名称 | 数据类型 |
---|---|
name | string |
password | string |
先验证name是否有效与是否被使用(例如:name不能超过10个字符且字符都在ASCII中)
核验password是否规范(例如:大于6位小于20位) 确认没问题后
将用户数据(注册的Email,name,password)储存到LoginList(注册列表),并自增出一个新的ID
(4)调用储存操作信息功能模块
index/signup
账号密码登录表单:
名称 | 数据类型 |
---|---|
Email/id | string /int |
password | string |
验证码登录表单:
名称 | 数据类型 |
---|---|
string | |
验证码 | int |
/home
home/signout
home/resetpassword 两个按钮:旧密码改密|验证码改密
(1).调用身份验证功能模块
旧密码改密表单:
名称 | 数据类型 |
---|---|
password | string |
new password | string |
new password again | string |
(2). 用户填写表单信息,点击提交.
(3). 调用密码验证功能模块
(4). 检验newpassword格式是否正确
(5). 检验password again密码是否相同
(6). 核验成功,服务端修改MySQL中的 LoginList(注册列表)中对应的id下的password
(7). 调用储存操作信息功能模块
(1).调用身份验证功能模块
验证码改密表单:
名称 | 数据类型 |
---|---|
验证码 | int |
(2). 用户填写表单信息,点击提交.
(3). 调用邮箱验证码功能模块
(4). 检验newpassword格式是否正确
(5). 检验password again密码是否相同
(6). 核验成功,服务端修改MySQL中的 LoginList(注册列表)中对应的id下的password
(7). 调用储存操作信息功能模块
本文由 mdnice 多平台发布