Vue+Node实现的商城用户管理功能示例


Posted in Javascript onDecember 23, 2019

本文实例讲述了Vue+Node实现的商城用户管理功能。分享给大家供大家参考,具体如下:

1、用户登陆

前端将用户输入的用户名密码post发送到后端,如果返回status=0,代表登陆成功,将hasLogin置为true,控制页面登陆按钮不显示,并显示返回的用户名nickname

login(){
     if(!this.username||!this.password){
      this.errMsg="请输入用户名与密码!";
      this.errShow=true;
     }else{
      axios.post('/users/login',{
       username:this.username,
       password:this.password
      }).then((response,err)=>{
       let res=response.data;
       if(res.status===0){
        this.hasLogin=true;
        this.nickname=res.result;
        this.closeLogin();
       }else{
        this.errShow=true;
        this.errMsg=res.msg;
       }
      })
     }
    },

后端根据前端传来的用户名、密码在数据库中查找指定条目,查询成功返回status=0,并设置res的cookie保存用户名与Id

router.post('/login', function(req, res, next) {
 let username=req.body.username;
 let password=req.body.password;
 let params={
  userName:username,
  userPwd:password
 };
 user.findOne(params,(err,userDoc)=>{
  "use strict";
  if(err){
   res.json({
    status:1,
    msg:err.message
   })
  }else {
   if(userDoc){
    //登陆成功后设置res.cookie与req.session
    res.cookie('userId',userDoc.userId,{
     maxAge:1000*60*60
    });
    res.cookie('userName',userDoc.userName,{
     maxAge:1000*60*60
    });
    res.json({
     status:0,
     msg:'登陆成功',
     result:userDoc.userName
    });
   }else{
    res.json({
     status:1,
     msg:'用户名或密码错误!'
    });
   }
  }
 })
});

2、服务器Express全局拦截

一些内容在用户未登录是无法访问的,需要服务器对非法请求进行拦截。在nodejs中请求先到达app.js文件,然后再转发到指定路由。在转发之前,可以先对用户登陆状态进行判断,如果cookies中有设置userId,表明已登陆,执行下一步next()。如果未登录,只可以访问指定的路由路径,由req.originalUrl判断是否等于或包含允许的访问路径,用户在未登录时可以访问登陆页面与商品列表页面。如果访问其他路径则返回错误信息“用户未登录”:

//全局拦截
app.use(function (req,res,next) {
 if(req.cookies.userId) next();    //已登陆
 //未登录,只能访问登录与商品页面
 else if(req.originalUrl==='/users/login'||req.originalUrl.indexOf('/goods')>-1) next();
 else{
  res.json({
   status:3,
   msg:'用户未登录'
  })
 }
});
//路由跳转
app.use('/', index);
app.use('/users', users);
app.use('/goods', goods);

3、校验登陆

在页面加载完成后,需要判断用户是否已经登陆过了,前端向后端发出checkLogin的请求,后端根据cookie中的userId是否设置,返回判断信息,如果登陆则不需要用户再次手动登陆了

router.get('/checkLogin',(req,res)=>{
 "use strict";
 if(req.cookies.userId){      //设置了cookie,用户已登陆
  res.json({
   status:0,
   msg:"登录成功",
   username:req.cookies.userName
  })
 }else {
  res.json({
   status:3,
   msg: "未登录"
  })
 }
});

4、登出

用户的登出操作就是将cookie信息去除,即在后台将用户cookie的有效期置为0

router.get('/logout',(req,res)=>{
 "use strict";
 res.cookie('userId','',{maxAge:0});
 res.cookie('userName','',{maxAge:0});
 res.json({
  status:0,
  msg:'登出成功!'
 })
});

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
免费空间广告万能消除代码
Sep 04 Javascript
JavaScript脚本性能优化注意事项
Nov 18 Javascript
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
Feb 23 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
Jan 06 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
javascript三元运算符用法实例
Apr 16 Javascript
jQueryUI Datepicker组件设置日期高亮
Oct 13 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
Dec 22 #Javascript
webpack打包html里面img后src为“[object Module]”问题
Dec 22 #Javascript
node.js事件轮询机制原理知识点
Dec 22 #Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 #Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
Dec 22 #Javascript
判断JavaScript中的两个变量是否相等的操作符
Dec 21 #Javascript
javascript中的相等操作符(==与===区别)
Dec 21 #Javascript
You might like
浅谈thinkphp的实例化模型
2015/01/04 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
js数组去重的N种方法(小结)
2018/06/07 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
Python操作MongoDB详解及实例
2017/05/18 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Python partial函数原理及用法解析
2019/12/11 Python
win10安装python3.6的常见问题
2020/07/01 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
文秘求职信范文
2014/04/10 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
团队队名口号大全
2014/06/06 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
小学班级口号大全
2015/12/25 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python