成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue中的驗(yàn)證登錄狀態(tài)

draveness / 2040人閱讀

摘要:用存儲(chǔ)用戶路由守衛(wèi)路由中設(shè)置的字段就在當(dāng)中每次跳轉(zhuǎn)的路徑登錄狀態(tài)下訪問(wèn)頁(yè)面會(huì)跳到如果沒(méi)有訪問(wèn)任何頁(yè)面。一個(gè)簡(jiǎn)單的保存登錄狀態(tài)的小。

Vue項(xiàng)目中實(shí)現(xiàn)用戶登錄及token驗(yàn)證

先說(shuō)一下我的實(shí)現(xiàn)步驟:

使用easy-mock新建登錄接口,模擬用戶數(shù)據(jù)

使用axios請(qǐng)求登錄接口,匹配賬號(hào)和密碼

賬號(hào)密碼驗(yàn)證后, 拿到token,將token存儲(chǔ)到sessionStorage中,并跳轉(zhuǎn)到首頁(yè)

前端每次跳轉(zhuǎn)時(shí),就使用導(dǎo)航守衛(wèi)(vue-router.beforeEach)判斷 sessionStorage 中有無(wú) token ,沒(méi)有就跳轉(zhuǎn)到登錄頁(yè)面,有則跳轉(zhuǎn)到對(duì)應(yīng)路由頁(yè)面。

注銷后,就清除sessionStorage里的token信息并跳轉(zhuǎn)到登錄頁(yè)面

使用easy-mock模擬用戶數(shù)據(jù)

我用的是easy-mock,新建了一個(gè)接口,用于模擬用戶數(shù)據(jù):

{
  "error_code": 0,
  "data": [{
      "id": "1",
      "usertitle": "管理員",
      "username": "admin",
      "password": "123456",
      "token": "@date(T)",
    },
    {
      "id": "2",
      "usertitle": "超級(jí)管理員",
      "username": "root",
      "password": "root",
      "token": "@date(T)",
    }
  ]
}

login.vue中寫好登陸框:


然后下載axios:npm install axios --save,用來(lái)請(qǐng)求剛剛定義好的easy-mock接口:

 login(){
        const self = this;
        axios.get("https://easy-mock.com/mock/5c7cd0f89d0184e94358d/museum/login").then(response=>{
          var res =response.data.data,
              len = res.length,
              userNameArr= [],
              passWordArr= [],
              ses= window.sessionStorage; 
          // 拿到所有的username
          for(var i=0; i{
          console.log("連接數(shù)據(jù)庫(kù)失?。?)
        })
      }

這一步最重要的是當(dāng)賬號(hào)密碼正確時(shí),把請(qǐng)求回來(lái)的token放在sessionStorage中,

配置路由

然后配置路由新加一個(gè)meta屬性:

    {
      path: "/",
      name: "login",
      component: login,
      meta:{
        needLogin: false
      }
    },
    {
      path: "/index",
      name: "index",
      component: index,
      meta:{
        needLogin: true
      }
    }

判斷每次路由跳轉(zhuǎn)的鏈接是否需要登錄,

導(dǎo)航衛(wèi)士

main.js中配置一個(gè)全局前置鉤子函數(shù):router.beforeEach(),他的作用就是在每次路由切換的時(shí)候調(diào)用
這個(gè)鉤子方法會(huì)接收三個(gè)參數(shù):to、from、next。
to:Route:即將要進(jìn)入的目標(biāo)的路由對(duì)象,
from:Route:當(dāng)前導(dǎo)航正要離開(kāi)的路由,
next:Function:個(gè)人理解這個(gè)方法就是函數(shù)結(jié)束后執(zhí)行什么,先看官方解釋
1.next():進(jìn)行管道中的下一個(gè)鉤子。如果全部鉤子執(zhí)行完了,則導(dǎo)航的狀態(tài)就是confirmed(確認(rèn)的),
2.next(false):中斷當(dāng)前的導(dǎo)航。如果瀏覽器的url改變了(可能是用戶手動(dòng)或?yàn)g覽器后退按鈕),那么url地址會(huì)重置到from路由對(duì)應(yīng)的地址。
3.next("/")next({path:"/"}):跳轉(zhuǎn)到一個(gè)不同的地址。當(dāng)前導(dǎo)航被中斷,進(jìn)入一個(gè)新的導(dǎo)航。

用sessionStorage存儲(chǔ)用戶token
//路由守衛(wèi)
router.beforeEach((to, from, next)=>{
    //路由中設(shè)置的needLogin字段就在to當(dāng)中 
    if(window.sessionStorage.data){
      console.log(window.sessionStorage);
      // console.log(to.path) //每次跳轉(zhuǎn)的路徑
      if(to.path === "/"){
        //登錄狀態(tài)下 訪問(wèn)login.vue頁(yè)面 會(huì)跳到index.vue
        next({path: "/index"});
      }else{
        next();
      }
    }else{
      // 如果沒(méi)有session ,訪問(wèn)任何頁(yè)面。都會(huì)進(jìn)入到 登錄頁(yè)
      if (to.path === "/") { // 如果是登錄頁(yè)面的話,直接next() -->解決注銷后的循環(huán)執(zhí)行bug
        next();
      } else { // 否則 跳轉(zhuǎn)到登錄頁(yè)面
        next({ path: "/" });
      }
    }
})

這里用了router.beforeEach vue-router導(dǎo)航守衛(wèi)
每次跳轉(zhuǎn)時(shí)都會(huì)判斷sessionStorage中是否有token值,如果有則能正常跳轉(zhuǎn),如果沒(méi)有那么就返回登錄頁(yè)面。

注銷

至此就完成了一個(gè)簡(jiǎn)單的登錄狀態(tài)了,瀏覽器關(guān)閉后sessionStorage會(huì)清空的,所以當(dāng)用戶關(guān)閉瀏覽器再打開(kāi)是需要重新登錄的

當(dāng)然也可以手動(dòng)清除sessionStorage,清除動(dòng)作可以做成注銷登錄,這個(gè)就簡(jiǎn)單了。

    loginOut(){
    // 注銷后 清除session信息 ,并返回登錄頁(yè)
    window.sessionStorage.removeItem("data");
    this.common.startHacking(this, "success", "注銷成功!");
    this.$router.push("/index"); 
    }

寫一個(gè)清除sessionStorag的方法。
一個(gè)簡(jiǎn)單的保存登錄狀態(tài)的小Demo。

參考:
騰訊云社區(qū)-Vue+SessionStorage實(shí)現(xiàn)簡(jiǎn)單的登錄
SF-從前后端分別學(xué)習(xí)——注冊(cè)/登錄流程2
Vue-router實(shí)現(xiàn)單頁(yè)面應(yīng)用在沒(méi)有登錄情況下,自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面
vue+axios新手實(shí)踐實(shí)現(xiàn)登陸
Vue實(shí)戰(zhàn)(四)登錄/注冊(cè)頁(yè)的實(shí)現(xiàn)
vue頁(yè)面控制權(quán)限,vuex刷新保存狀態(tài)、登錄狀態(tài)保存
vue頁(yè)面控制權(quán)限,vuex刷新保存狀態(tài)、登錄狀態(tài)保存
(vue.js)前后端分離的單頁(yè)應(yīng)用如何來(lái)判斷當(dāng)前用戶的登錄狀態(tài)?
Vue登錄注冊(cè),并保持登錄狀態(tài)
vue登錄注冊(cè)及token驗(yàn)證
Vue項(xiàng)目中實(shí)現(xiàn)用戶登錄及token驗(yàn)證

vue-router守衛(wèi)導(dǎo)航官方文檔:vue-router導(dǎo)航守衛(wèi)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109019.html

相關(guān)文章

  • 一個(gè)JAVA WEB偽全棧的VUE入坑隨筆:從登錄開(kāi)始(VUEX)

    摘要:此文章用于記錄本人學(xué)習(xí)歷程,有共同愛(ài)好者可加好友一起分享。從上周天,由于本周有公司籃球比賽,所以耽誤兩天晚上,耗時(shí)三個(gè)晚上勉強(qiáng)做了一個(gè)登錄功能。這里的用戶信息和登錄狀態(tài)都是直接取的中的用戶信息進(jìn)行屬性值初始化。 此文章用于記錄本人VUE學(xué)習(xí)歷程,有共同愛(ài)好者可加好友一起分享。從上周天,由于本周有公司籃球比賽,所以耽誤兩天晚上,耗時(shí)三個(gè)晚上勉強(qiáng)做了一個(gè)登錄功能。中間的曲折只有自己知道,有...

    Zack 評(píng)論0 收藏0
  • 手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇)

    摘要:我們將登錄按鈕上綁上事件,點(diǎn)擊登錄之后向服務(wù)端提交賬號(hào)和密碼進(jìn)行驗(yàn)證。所以前端和后端權(quán)限的劃分是不太一致。側(cè)邊欄最后一個(gè)涉及到權(quán)限的地方就是側(cè)邊欄,不過(guò)在前 完整項(xiàng)目地址:vue-element-admin 系列文章: 手摸手,帶你用vue擼后臺(tái) 系列一(基礎(chǔ)篇) 手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇) 手摸手,帶你用vue擼后臺(tái) 系列三 (實(shí)戰(zhàn)篇) 手摸手,帶你用vu...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 基于 Vue 的后臺(tái)管理系統(tǒng)前端實(shí)踐

    摘要:輸入框內(nèi)容過(guò)濾產(chǎn)品有一個(gè)需求是,在搜索用戶信息時(shí),只能通過(guò)郵箱搜索,并且只能輸入字母數(shù)字以及。我選擇了輸入框的值這里的坑就是需要在中更新值,因?yàn)樵剡@時(shí)才刷新。是否有一定要用的必要類似的管理系統(tǒng)涉及到不同頁(yè)面之間的交互都很少。 初始化項(xiàng)目 使用 Vue-cli3 初始化項(xiàng)目1 安裝 Element UI安裝 Vue-i18n,做相關(guān)配置2,3 原則上需要對(duì) Element 也做 I18...

    scwang90 評(píng)論0 收藏0
  • vue全家桶仿某魚部分布局以及功能實(shí)現(xiàn)

    摘要:在這里簡(jiǎn)單敘述一下我仿某魚部分布局以及功能實(shí)現(xiàn)的過(guò)程,僅做學(xué)習(xí)用途。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫(kù)結(jié)合使用時(shí),也完全能夠?yàn)閺?fù)雜的單頁(yè)面應(yīng)用提供驅(qū)動(dòng)??梢赃M(jìn)行確認(rèn)收貨后刪除訂單。 前言 每次寫文章時(shí),總會(huì)覺(jué)得比寫代碼難多了,可能這就是我表述方面的不足吧,然而寫文章也是可以復(fù)盤一下自己的開(kāi)發(fā)過(guò)程,對(duì)自己還是受益良多的。在這里簡(jiǎn)單敘述一下我仿某魚部分布局以及功能實(shí)現(xiàn)的過(guò)程,僅做...

    dreamGong 評(píng)論0 收藏0
  • VUE知識(shí)點(diǎn)集錦

    摘要:載入前后在階段,實(shí)例的和都初始化了,但還是掛載之前為虛擬的節(jié)點(diǎn),還未替換。類似于,不同在于提交的是,而不是直接變更狀態(tài)可以包含任意異步操作。 vue基礎(chǔ) 1、 router 路由與 a 標(biāo)簽的區(qū)別:https://www.jianshu.com/p/34b...2、 VUE雙向綁定的原理: 答:VUE實(shí)現(xiàn)雙向數(shù)據(jù)綁定的原理就是利用了 Object.defineProperty() 這個(gè)...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<