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 相关文章推荐
javascript获取下拉列表框当中的文本值示例代码
Jul 31 Javascript
js实现的折叠导航示例
Nov 29 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
javascript中replace( )方法的使用
Apr 24 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 Javascript
JS 在数组指定位置插入/删除数据的方法
Jan 12 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
Feb 01 Javascript
vue简单封装axios插件和接口的统一管理操作示例
Feb 02 Javascript
Openlayers实现图形绘制
Sep 28 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
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python使用sorted排序的方法小结
2017/07/28 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
历史专业学生的自我评价
2014/02/28 职场文书
技能比武方案
2014/05/21 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
小组口号大全
2014/06/09 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
无房证明样本
2015/06/17 职场文书
走进科学观后感
2015/06/18 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
python 命令行传参方法总结
2021/05/25 Python
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS