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 相关文章推荐
服务器安全设置的几个注册表设置
Jul 28 Javascript
Jquery倒计时源码分享
May 16 Javascript
跟我学习javascript的垃圾回收机制与内存管理
Nov 23 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
vue.js中mint-ui框架的使用方法
May 12 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
Nov 23 Javascript
vue.js获得当前元素的文字信息方法
Mar 09 Javascript
angular2模块和共享模块详解
Apr 08 Javascript
Next.js实现react服务器端渲染的方法示例
Jan 06 Javascript
Javascript执行流程细节原理解析
May 14 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 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
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
javascript 内存回收机制理解
2011/01/17 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
jqTransform美化表单
2015/10/10 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
美国家居装饰店:Pier 1
2019/09/04 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
校园餐饮创业计划书
2014/01/10 职场文书
迎接领导欢迎词
2014/01/11 职场文书
五水共治一句话承诺
2014/05/30 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
table不让td文字溢出操作方法
2022/12/24 HTML / CSS