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中对对层的控制
Dec 29 Javascript
文本框根据输入内容自适应高度的代码
Oct 24 Javascript
用js写了一个类似php的print_r输出换行功能
Feb 18 Javascript
浅谈javascript中的DOM方法
Jul 16 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
学习vue.js条件渲染
Dec 03 Javascript
React Router基础使用
Jan 17 Javascript
漂亮实用的页面loading(加载)封装代码
Feb 03 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 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实现的功能是显示8条基色色带
2006/10/09 PHP
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
js动态设置div的值下例子
2013/10/29 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
python print出共轭复数的方法详解
2019/06/25 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
python定位xpath 节点位置的方法
2019/08/27 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
你常见到的runtime exception
2016/09/05 面试题
教师网络培训感言
2014/03/09 职场文书
外联部演讲稿
2014/05/24 职场文书
119消防日活动总结
2014/08/29 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
教师节晚会主持词
2015/06/30 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL
Python3.10的一些新特性原理分析
2021/09/15 Python