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 27 Javascript
JavaScript 获得选中文本内容的方法
Feb 15 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
JavaScript插件化开发教程 (二)
Jan 27 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
javascript制作照片墙及制作过程中出现的问题
Apr 04 Javascript
JavaScript的String字符串对象常用操作总结
May 26 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
Aug 30 Javascript
Bootstrap CSS组件之大屏幕展播
Dec 17 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
Apr 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
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
layui实现数据分页功能
2019/07/27 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
处理Python中的URLError异常的方法
2015/04/30 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
flask入门之表单的实现
2018/07/18 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
自定义django admin model表单提交的例子
2019/08/23 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
个人银行贷款担保书
2014/04/01 职场文书
政府法律服务方案
2014/06/14 职场文书
公务员考察材料
2014/12/23 职场文书
消费者投诉书范文
2015/07/02 职场文书
房产遗嘱范本
2015/08/06 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS