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 相关文章推荐
jQuery filter函数使用方法
May 19 Javascript
javascript操作字符串的原生方法
Dec 22 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 Javascript
初识Javascript小结
Jul 16 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
Vue.js动态添加、删除选题的实例代码
Sep 30 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
微信小程序 开发之全局配置
May 05 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
Feb 22 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
Apr 11 Javascript
node+vue实现文件上传功能
May 28 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 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制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
php建立Ftp连接的方法
2015/03/07 PHP
PHP生成树的方法
2015/07/28 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
Python制作Windows系统服务
2017/03/25 Python
python中sys.argv函数精简概括
2018/07/08 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
python机器学习实现决策树
2019/11/11 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
个人自我鉴定
2013/11/07 职场文书
食品业务员岗位职责
2014/03/18 职场文书
完美的中文自荐信
2014/05/24 职场文书
公司贷款承诺书
2014/05/30 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
领导干部对照检查材料
2014/08/24 职场文书
个人整改措施书面材料
2014/10/24 职场文书
出差报告格式模板
2014/11/06 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python