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的parseInt 进制问题
May 07 Javascript
JS backgroundImage控制
May 19 Javascript
javascript函数中的arguments参数
Aug 01 Javascript
Javascript自定义排序 node运行 实例
Jun 05 Javascript
js怎么覆盖原有方法实现重写
Sep 04 Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 Javascript
Jquery遍历select option和添加移除option的实现方法
Aug 26 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
JS实现面向对象继承的5种方式分析
Jul 21 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
May 30 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
Sep 25 Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 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实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
python rsa 加密解密
2017/03/20 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
Python运行异常管理解决方案
2020/03/09 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python ETL工具 pyetl
2020/06/07 Python
HTTP状态码详解
2021/03/18 杂记
纯css3实现照片墙效果
2014/12/26 HTML / CSS
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
青年创业培训欢迎词
2014/01/08 职场文书
销售主管竞聘书
2014/03/31 职场文书
感恩寄语大全
2014/04/11 职场文书
节能环保标语
2014/06/12 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
一文搞懂php的垃圾回收机制
2021/06/18 PHP