客户端(login.art)
登录功能实现,表单要添加name属性,这样才能向服务器提交数据

<div class="login-body"><div class="login-container"><h4 class="title">黑马程序员 - 博客管理员登录</h4><div class="login"><form action="/admin/login" method="post" id="loginForm"><div class="form-group"><label>邮件</label><input name="email" type="email" class="form-control" placeholder="请输入邮件地址"></div><div class="form-group"><label>密码</label><input name="password" type="password" class="form-control" placeholder="请输入密码"></div><button type="submit" class="btn btn-primary">登录</button></form></div><div class="tips"></div></div></div>

服务器端(login.js)
通过引入body-parser模块处理post请求参数
通过引入boduParser的方式处理请求参数 urlencoded里边extended:值为
false时会使用querystring处理请求参数,当值为true时,会使用qs的方式
处理请求参数(推荐false)

//引入body-parser模块,处理请求参数
const bodypaser = require('body-parser');
//创建服务器
const app = express();
//处理post请求参数
app.use(bodypaser.urlencoded({ extended: false }));

服务器端(app.js)
登录成功和没成功结果是一样的,这是由于http的无状态性(因为网站基于
http协议,客户端和服务器端请求响应一次后就断开,只关心请求,完成后
就断开)因此必须要建立客户端和服务器端的关联关系,要借助cookie
sesson技术。引入express-session模块
模块返回一个方法,我们用session接受,调用该方法就可以在服务器端创建session对象。方法内部为请求对象创建一个session属性,用于存放用户数据,并生成sessionid(唯一对应该数据),放在客户端cookie中。当向服务器端请求数据时,方法内部会从客户端cookie中获取sessionid,服务器从而知道访问其用户,联系建立。
里边参数是秘钥,可自定义值,用于客户端cookie加密和服务器端cookie解密

//引入express-session模块 该模块返回一个方法,用变脸接收
const session = require('express-session');
app.use(session({resave: false, //添加 resave 选项saveUninitialized: true, //添加 saveUninitialized 选项secret: 'aF,.j)wBhq+E9n#aHHZ91Ba!VaoMfC', // 建议使用 128 个字符的随机字符串cookie: { maxAge: 60 * 1000 }}));

服务器端(loginPage.js)
引入bcrypt.js进行密码加密处理

//引入user用户构造集合
const { User } = require('../../model/user');
//引入bcrypt模块进行密码加密处理
const bcrypt = require('bcryptjs');
module.exports = async (req, res) => {const { email, password } = req.bodyif (email.trim().length == 0 || password.trim().length == 0) {return res.status(400).render('admin/error', { msg: '邮件或密码错误' });}  // 根据邮箱查找用户(es6写法,键值对省略),找到则为用户集合对象,否则为空let user =await User.findOne({ email });if (user) {//密码比对成功,则登录.使用await bcrypt.compare进行加密密码比对let isVaild = await bcrypt.compare(password,user.password);if (isVaild) {//将用户名存储到请求参数中req.session.username = user.username;//同上将用户角色放在session中req.session.role = user.role;else {return res.status(400).render('admin/error', { msg: '邮件或密码错误' });}} else {return res.status(400).render('admin/error', { msg: '邮件或密码错误' });}

博客项目——登录功能实现相关推荐

  1. 多人博客管理系统登录功能

    多人博客管理系统 目标 能够知道搭建项目环境的步骤 能够理解模板优化 熟悉登录功能的思路逻辑 知道密码为什么需要加密 知道cookie跟session是什么 能够参照笔记写出登录功能 功能需求 博客内 ...

  2. 【博客项目】—登录验证功能实现( 五)

    [博客项目]-登录验证功能实现( 五)

  3. 【博客项目】—登录功能实现( 四)

    [博客项目]-登录功能实现( 四) 创建用户集合,初始化用户 连接数据库 创建用户集合 初始化项目

  4. 博客项目学习笔记十二:登录注册功能(登录)

    博客项目目录: 请戳这里 准备 需求:实现用户登录功能,登录之后,跳转到首页,并且页面信息由游客状态变为用户状态 1.引入shiro依赖包 <dependency><groupId& ...

  5. 简单个人博客系统java web_JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册...

    JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册 发布时间:2020-07-17 17:10阅读:( )字号: 大 中 小 后台系统的所有界面图以及之前的准备工作欢迎看我之前的博文& ...

  6. 项目分享:模拟博客园登录

    项目二:模拟博客园登录 声明: 项目代码纯粹本人自己编写,无任何抄袭.转载等情况,所以写的很low,仅供大家参考,有不懂的随时评论留言 项目要求: 首先程序启动,显示下面内容供用户选择: 请登录 请注 ...

  7. 【博客项目】—用户删除功能(十二)

    [博客项目]-用户删除功能(十二)

  8. 【博客项目】—用户修改功能(十一)

    [博客项目]-用户修改功能(十一)

  9. 【博客项目】—用户新增功能(九)

    [博客项目]-用户新增功能(九) 此时的数据库里面已经新增了一个用户

最新文章

  1. [转]31个让你变聪明的方法
  2. c语言创建新指针,如何用c语言创建一个指针
  3. 12.15模拟:总结
  4. Java NIO教程
  5. 【优化算法】多目标利希滕贝格算法(MOLA)【含Matlab源码 1434期】
  6. pdflatex和xelatex的使用差别和建议
  7. 基于激光雷达技术的3维虚拟校园建设与研究_爱学术—免费下载
  8. vue博客模板—Fblog
  9. Gym - 100886I 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest I - Archaeological Res
  10. 小程序loding动画组件封装及源码
  11. 【已解决】Nginx基于多端口、多域名配置
  12. 唐山盐碱滩成渤海明珠 国稻种芯·中国水稻节:河北曹妃甸大米
  13. java se 试题_JavaSE基础试题附答案
  14. C++ 安妮的宠物小屋 练习
  15. [luogu P4230]连环病原体
  16. temp.....................
  17. 房间脉冲响应测量与模拟方法
  18. 从Folding@home项目看GPU通用计算发展
  19. 2021年全球区块链产业重要投资和发展领域
  20. 医学影像识别中的常用AI指标

热门文章

  1. NO.1——VulnHub-GoldenEye-1-Walkthrough
  2. HTML字母导航栏怎么做,如何用css做导航栏?
  3. 华为机试真题 C++ 实现【模拟商场优惠打折】【2022.11 Q4 新题】
  4. 谷歌推出新优化器Lion:优化算法的符号发现
  5. 请问外贸独立站靠谱的收款工具有哪些,求推荐!?
  6. ubuntu下安装摄像头应用程序xawtv
  7. 20220312纪中集训总结
  8. Proteus仿真stc89c51正反调速控制uln2003步进电机
  9. C# 调用微软自带SpeechSDK 实现文字转语音
  10. Hexo+Yilia 所遇问题解决方法汇总