项目1login登录页面方案设计

文章目录

    • 需求
    • MySQL表
    • 实现方案
      • index页面
        • login注册)
        • sign up登录)
      • home页面
        • sign out登出)
        • reset password重置密码)
          • 1. **旧密码密码改密**
          • 2. **验证码改密**
        • 查询操作记录

需求

实现一个登录功能

实现的功能

  1. 注册邮箱注册)
  2. 登录邮箱+密码)
  3. 重置密码
  4. 查看操作记录登录, 注册, 重置密码, 登出. 都算操作)
  5. 登出

MySQL表

  1. LoginList注册列表)
名称 数据类型
id主键) int
name唯一) string
password string
Email唯一) string
  1. SignInList登录列表)
名称 数据类型
id 主键) int
身份码 int
  1. OperationRecord操作列表)
名称 数据类型
id int
操作 string
time string

实现方案

index页面

/index

定义一个index页面包含两个按钮login注册)和sign up登录)
点击login进入注册页面,点击sign up进入登录页面

login注册)

index/login

渲染一个表单页面,用户填写好表单数据点击"注册",服务端发送post请求并发送这组表单数据

注册表单:

名称 数据类型
name string
password string
Email string
验证码 int
  1. 先验证name是否有效与是否被使用例如:name不能超过10个字符且字符都在ASCII中)

  2. 验证Email是否有效与是否被使用

  3. 核验password是否规范例如:大于6位小于20位)
    确认没问题后

  4. 先将Email发送到服务端,服务端先邮箱地址发送一封验证邮件,其中包含验证码只能使用一次,五分钟后失效)

  5. 用户填写完善所有数据,并点击提交,数据发送到服务端,核验 验证码的准确性核验失败返回验证码错误),核验成功,服务端随机生成一个不重复的int数据作为id账号)将用户提交的表单信息和id储存到MySQL的LoginList注册表单)中,password需要加密储存,以保证信息的安全性)

  6. 向Email发送一封注册成功邮件,并返回完成注册;

7)通过id向OperationRecord操作列表)中储存 “注册” 操作与目前的时间

sign up登录)

index/signup

  1. 邮箱密码登录

账号密码登录表单:

名称 数据类型
Email string
password string

1). 用户填写表单信息,点击登录.向服务端发送表单数据,服务端拿到表单数据去MySQL中查找,如果找不到对应的Email返回该邮箱未注册,请先注册,如果password错误返回密码错误,

2). 核验成功,服务端随机生成一个临时的访问身份码,与id一起储存到MySQL中的SignInList登录列表)中,再将一份发送给用户,用户拿着此身份码进入home页面

3)通过id向OperationRecord操作列表)中储存 “登录” 操作与目前的时间

  1. 验证码登录

验证码登录表单:

名称 数据类型
Email string
验证码 int

1). 用户填写Email,点击发送验证码,向服务端发送Email数据,服务端拿到数据去MySQL中查找,如果找不到对应的Email返回该邮箱未注册,请先注册,如果存在就向邮箱发送一封验证邮件

2). 用户填写验证邮件,点击登录,服务器会核验验证码的正确性,核验成功,服务端随机生成一个临时的访问身份码,与id一起储存到MySQL中的SignInList登录列表)中,再将一份发送给用户,用户拿着此身份码进入home页面

3)通过id向OperationRecord操作列表)中储存 “登录” 操作与目前的时间

用户登出或者意外掉线,服务端会删除SignInList登录列表)中Email对应的数据.

原理图

home页面

/home

  • 定义三个按钮 sign out登出),reset password重置密码),view查看操作记录)

sign out登出)

home/signout

  1. 通过用户的Email,删除SignInList登录列表)对应的数据.
  2. 回到index页面

3)通过id向OperationRecord操作列表)中储存 “登出” 操作与目前的时间

reset password重置密码)

home/resetpassword
两个按钮:旧密码改密|验证码改密

1. 旧密码密码改密

1). 验证正常登录状态:核验身份)
检验目前用户的id与身份码信息是否在MySQL中SignInList登录列表)存在且正确

  • 核验身份失败,退回到index页面

旧密码改密表单:

名称 数据类型
password string
new password string
new password again string

2). 用户填写表单信息,点击提交.向服务端发送表单数据,服务端拿到表单数据核验new password是否规范例如:大于6位小于20位),

3). 检验password again密码是否相同

4). 核验成功,服务端修改MySQL中的 LoginList注册列表)中对应的id下的password

5)通过id向OperationRecord操作列表)中储存 “改密” 操作与目前的时间

2. 验证码改密

1). 验证正常登录状态:核验身份)
检验目前用户的id与身份码信息是否在MySQL中SignInList登录列表)存在且正确

  • 核验身份失败,退回到index页面

验证码改密表单:

名称 数据类型
验证码 int

1). 用户点击发送验证码,服务器通过用户的id获取用户的Email信息,向Email发送一封验证邮件

2). 用户点击提交,服务端核验验证码正确性核验失败返回验证码错误),核验成功:修改MySQL中的 LoginList注册列表)中对应的用户的id的password;

3)通过id向OperationRecord操作列表)中储存 “改密” 操作与目前的时间

查询操作记录

  1. 身份核验:
    检验目前用户的id与身份码信息是否在MySQL中SignInList登录列表)存在且正确

  2. 核验无误,服务端查询OperationRecord操作列表)中的所有id为用户id的数据,并返回给用户

本文由mdnice多平台发布

查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2273859.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

项目1login登录页面方案设计

文章目录需求MySQL表实现方案index页面login注册)sign up登录)home页面sign out登出)reset password重置密码)1. **旧密码密码改密**2. **验证码改密**查询操作记录需求
实现一个登录功能
实现的功能
注册邮箱注册)登录邮箱密码)重置密码查看操作记录登录, 注册, 重置……

python中使用socket请求http接口

在python中,一切的网络通信均基于socket,所以对于网络通信的理解应该从socket入手。
socket可以实现和不同的机器通信,从多个案例总结一下就是在请求不同协议的服务时,第一次的入参有一定的要求,我们只要按照约定的写法&#xff0……

戴尔惠普联想笔记本性价比(戴尔和联想笔记本性价比)

联想。
联想做笔记本时间长,售后、质量都不错,追求稳定,性价比合理,长久使用考虑,不会有太大笔记本毛病。
联想1984就开始进入笔记本电脑行业,由中科院投资,后来收购了IBM之后,笔记……

JavaScript 进阶 – 0基础第一天

JavaScript 进阶 – 第1天 学习作用域、变量提升、闭包等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。 作用域函数进阶解构赋值综合案例
作用域 了解作用域对程序执行的影响及作用域链的查找机制……

【JavaEE】ConcurrentHashMap与Hashtable有什么区别?

博主简介:努力的打工人一枚博主主页:xyk:所属专栏: JavaEE初阶Hashtable、ConcurrentHashMap是使用频率较高的数据结构,它们都是以key-value的形式来存储数据,且都实现了Map接口,日常开发中很多人对其二者之间的区别并……

Twitter-高性能hash_map

学习twitter的高性能散列表源码: 个人认为Twitter散列表的优点: 1、使用C宏定义实现C泛型的思想; 2、散列函数冲突小; 3、使用bitmap思想,标志位占用空间小; 4、自动扩展容量,判断扩容的条件&am……

机械臂动力学参数辨识学习笔记

1、为什么需要动力学参数辨识? 图1 电机三环控制图 通常情况下,标准的工业控制器通过机械臂内部的PID进行调节控制机械臂的运动,即用PID输出力矩,涉及到经典的图一所示的电机三环控制(位置环、速度环、电流环&#xff……

JavaEE初阶学习:文件操作

1.文件
1.认识文件
平时说的文件一般都是指存储再硬盘上的普通文件,形如txt,jpg,MP4,rar等这些文件都可以认为是普通文件,它们都是再硬盘上存储的。
在计算机中,文件可能是一个广义的概念,就……

JavaScript 进阶 – 0基础第四天

JavaScript 进阶 – 第四天
深浅拷贝
浅拷贝
浅拷贝:把对象拷贝给一个新的对象,开发中我们经常需要复制一个对象
如果直接赋值,则复制的是地址,修改任何一个对象,另一个对象都会变化
常见方法:
拷贝对……

vs中的错误集合

记录在vs 中遇到的 各种错误 1:project.vcxproj.filters 文件出现了异常,发现了以前的解决方案下的筛选器竟然没有了 原因:合并svn的时候 .vcxproj.filters 文件出现了 合并错误检查该文件里面是否有不一样的) 解决办法:解决 该文……

【排序】:冒泡排序以及三种优化

转载:https://blog.csdn.net/hansionz/article/details/80822494…

C++关于临界区CCriticalSection的线程同步 网狐框架示例

转载:https://www.jianshu.com/p/ba253c16cd0b…

递归算法讲解

递归思想本质是数学归纳法,讲所有问题归纳使用同一种解决方案处理,所有的问题化为子问题解决,子问题在转化为子问题解决,最终的子问题是和以上的解决方案不同,最终把这个问题给解决了。
转载自:https://bl……

单向链表初始化以及链表逆序

1、两种初始化的方法
2、逆序排列一个单向链表
//实现节点逆序
#include <stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;typedef struct Node
{int data;struct Node *next ;
}myNode;
Node * reverseNode * head);
Node * init……

判定一副牌是否是顺子

转载一个不用排序就判定出顺子的算法:https://blog.csdn.net/qq_43968080/article/details/85346468
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;#define MAX_COUNT 20
#define MASK_COLOR 0xF0 ……

几篇讲解lua闭包函数的博文

1:、https://blog.csdn.net/maximuszhou/article/details/44280109
2、https://www.jb51.net/article/55806.htm
3、举例讲解lua闭包函数的实际表现 https://www.jb51.net/article/55806.htm
4、看了这两篇博文基本就明白了闭包函数的用法了。…

cocosstudio的使用注意一(listview上加载一个itemLayout),item上加载checkbox,Text,导致listview“无法滑动”)

今天写代码遇到一个问题listview上加载一个itemLayout),item上加载checkbox,Text;并且设置回弹属性为false,那么死活无法向下滑动,so 我对litview添加监听事件,哦 触发到了,所以,关键点是我只添加了一个item,所有没有……

c++和lua相互调用

转载自:https://www.cnblogs.com/sevenyuan/p/4511808.html…

lua中对于for循环的用法

关于此种写法的 (for <var_list> in <expre_list> do end)
转载自:https://blog.csdn.net/qq_28644183/article/details/71629908…

原 texture packer 处理图片空白的问题

转载至: https://blog.csdn.net/harryptter/article/details/50344219
设置一个属性 trim mode 属性为 none…

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注