怎么在Vue中使用Node實現(xiàn)一個商城用戶管理功能

怎么在Vue中使用Node實現(xiàn)一個商城用戶管理功能?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)公司于2013年開始,先為三門峽等服務(wù)建站,三門峽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為三門峽企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

Vue的優(yōu)點

Vue具體輕量級框架、簡單易學(xué)、雙向數(shù)據(jù)綁定、組件化、數(shù)據(jù)和結(jié)構(gòu)的分離、虛擬DOM、運行速度快等優(yōu)勢,Vue中頁面使用的是局部刷新,不用每次跳轉(zhuǎn)頁面都要請求所有數(shù)據(jù)和dom,可以大大提升訪問速度和用戶體驗。

1、用戶登陸

前端將用戶輸入的用戶名密碼post發(fā)送到后端,如果返回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;
       }
      })
     }
    },

后端根據(jù)前端傳來的用戶名、密碼在數(shù)據(jù)庫中查找指定條目,查詢成功返回status=0,并設(shè)置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){
    //登陸成功后設(shè)置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、服務(wù)器Express全局?jǐn)r截

一些內(nèi)容在用戶未登錄是無法訪問的,需要服務(wù)器對非法請求進(jìn)行攔截。在nodejs中請求先到達(dá)app.js文件,然后再轉(zhuǎn)發(fā)到指定路由。在轉(zhuǎn)發(fā)之前,可以先對用戶登陸狀態(tài)進(jìn)行判斷,如果cookies中有設(shè)置userId,表明已登陸,執(zhí)行下一步next()。如果未登錄,只可以訪問指定的路由路徑,由req.originalUrl判斷是否等于或包含允許的訪問路徑,用戶在未登錄時可以訪問登陸頁面與商品列表頁面。如果訪問其他路徑則返回錯誤信息“用戶未登錄”:

//全局?jǐn)r截
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:'用戶未登錄'
  })
 }
});
//路由跳轉(zhuǎn)
app.use('/', index);
app.use('/users', users);
app.use('/goods', goods);

3、校驗登陸

在頁面加載完成后,需要判斷用戶是否已經(jīng)登陸過了,前端向后端發(fā)出checkLogin的請求,后端根據(jù)cookie中的userId是否設(shè)置,返回判斷信息,如果登陸則不需要用戶再次手動登陸了

router.get('/checkLogin',(req,res)=>{
 "use strict";
 if(req.cookies.userId){      //設(shè)置了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:'登出成功!'
 })
});

關(guān)于怎么在Vue中使用Node實現(xiàn)一個商城用戶管理功能問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

名稱欄目:怎么在Vue中使用Node實現(xiàn)一個商城用戶管理功能
標(biāo)題路徑:http://bm7419.com/article10/pscedo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、企業(yè)建站、網(wǎng)站設(shè)計做網(wǎng)站、網(wǎng)站設(shè)計公司網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司