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中的排序算法代码
Feb 22 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
Jan 11 Javascript
Javascript自定义排序 node运行 实例
Jun 05 Javascript
js获取url中"?"后面的字串方法
May 15 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
浅谈javascript中遇到的字符串对象处理
Nov 18 Javascript
20行JS代码实现粘贴板复制功能
Feb 06 Javascript
JAVA面试题 static关键字详解
Jul 16 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
destoon之一键登录设置
2014/06/21 PHP
yii操作cookie实例简介
2014/07/09 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
php fread函数使用方法总结
2019/05/28 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python实现包含min函数的栈
2016/04/29 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
毕业生自荐书模版
2014/01/04 职场文书
迟到检讨书400字
2014/01/13 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
介绍信的写法
2015/01/31 职场文书
高三教师工作总结2015
2015/07/21 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电