2. 项目功能实现
2.1 登录
1. 创建用户集合,初始化用户
1. 连接数据库
2. 创建用户集合
3. 初始化用户
连接数据库:
创建用户集合:
初始化用户
删除或注释掉测试代码:
2. 为登录表单项设置请求地址、请求方式以及表单项name属性
3. 当用户点击登录按钮时,客户端验证用户是否填写了登录表单
4. 如果其中一项没有输入,阻止表单提交
5. 服务器端接收请求参数,验证用户是否填写了登录表单
下载好第三方模块后重新启动服务器
设置google禁止使用js代码
高级设置->内容设置->JavaScript 选择禁止
6. 如果其中一项没有输入,为客户端做出响应,阻止程序向下执行
美化错误页面:
使用错误页面模板
优化页面:错误页面三秒后返回登录页面
7. 根据邮箱地址查询用户信息
8. 如果用户不存在,为客户端做出响应,阻止程序向下执行
9. 如果用户存在,将用户名和密码进行比对
10. 比对成功,用户登录成功
11. 比对失败,用户登录失败
12. 密码加密处理 bcrypt
哈希加密是单程加密方式:1234=>abcd
只能加密,不能解密
在加密的密码中加入随机字符串可以增加密码被破解的难度。
bcrypt依赖的其他环境
1.安装python 并把python设置到环境变量中
2.node-gyp
npm install node-gyp -g
3.windows-build-tools
Python 2版本:npm install --global --production windows-build-tools
Python其它版本:https://blog.csdn.net/weixin_43848802/article/details/105113616
测试第三方模块bcrypt能否使用
在项目中使用第三方模块bcrypt
比对密码:
13. 保存登录状态
成功登录后
表明没有保存登录状态(http协议的无状态性)
保存登录状态需要技术:cookie与session
cookie与session
cookie:浏览器在电脑硬盘中开辟的一块空间,主要供服务器端存储数据。
- cookie中的数据是以域名的形式进行区分的。
- cookie中的数据是有过期时间的,超过时间数据会被浏览器自动删除。
- cookie中的数据会随着请求被自动发送到服务器端。
session:实际上就是一个对象,存储在服务器端的内存中,在session对象中也可以存储多条数据,每一条数据都有一个sessionid做为唯一标识。
在node.js中需要借助express-session实现session功能。
npm install express-session
成功登录后
成功登录后
登录后跳转用户列表页面(重定向)
成功登录后
14.登录拦截(设置未登录不能查看user页面等)
验证:未登录状态下访问http://localhost/admin/user 会跳转到登录界面
15.将功能模块分离
(1)分离登录刷选功能模块:
验证:未登录状态下访问http://localhost/admin/user 会跳转到登录界面
(2)分离登录功能模块:
简化
验证登录功能能否正常运行
以同样的方式处理其它功能