最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue-element-admin下載到登錄的一些坑

 更新時間:2022年04月27日 15:06:40   作者:Q?  
本文主要介紹了vue-element-admin下載到登錄的一些坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

快速上手

官方文檔:https://panjiachen.github.io/vue-element-admin-site/zh/guide/

啟動項目

拉取代碼之后進行npm i 安裝

在這里插入圖片描述

ctrl -c 之后

執(zhí)行命令:git config --global url.“https://”.insteadOf git://
重新 npm  i          
成功!
npm run dev 啟動成功

依賴下載成功截圖

在這里插入圖片描述

另外npm i之后也可能會發(fā)現(xiàn)其他的報錯

具體哪些就不一一列舉了,我這邊node版本 v10.20.0 ,npm版本6.14.4
這里列舉 是因為之前有報錯發(fā)現(xiàn)要升級npm版本下載依賴,有個core.js很難下載。

下載固定npm指令: npm install npm@6.14.4 -g
node的話nvm隨便下載就好了

啟動成功

在這里插入圖片描述

登錄流程解析

1.目錄結(jié)構(gòu)

在這里插入圖片描述

重要文件

permission.js
登錄流程中,src/permission.js是最重要的環(huán)節(jié),這個文件是路由的全局鉤子(beforeEach和afterEach),全局鉤子的意思就是每次跳轉(zhuǎn)的時候可以根據(jù)情況進行攔截,不讓他跳轉(zhuǎn)。使用場景就是有些頁面需要登錄才能訪問,這時候就可以在beforeEach中校驗用戶登錄狀態(tài)來進行攔截。

utils/auth.js
設(shè)置token到cookie中的操作封裝。 

router
有關(guān)路由的一些設(shè)置

登錄流程解析

1.登錄頁面:view/login/index.vue

在這里插入圖片描述

點擊登錄按鈕后,觸發(fā)handleLogin方法,利用validate進行表單驗證,如果驗證通過,調(diào)用user/login方法傳遞表單里的數(shù)據(jù),根據(jù).then回調(diào)執(zhí)行this.$router.push方法,這個方法用于跟蹤:我是從哪里跳到/login頁面的,登錄后我就返回哪里。

2./user/login方法:src/store/modules/user.js

在這里插入圖片描述

這個方法主要做了以下工作:登錄驗證,登錄成功后,分別把token保存在vuex和cookie中。

3.permission.js :src/permission.js

router.beforeEach(async(to, from, next) => {
  // 從cookie中取得token
  const hasToken = getToken()
  
  // 如果有token 也就是已經(jīng)登陸的情況下
  if (hasToken) {
    // 并且要前往的路徑是'/login'  則返回 '/' 
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      // 從store中取得用戶的 roles, 也就是用戶的權(quán)限 并且用戶的權(quán)限數(shù)組必須有一個以上
      const hasRoles = store.getters.roles && store.getters.roles.length > 0
      // 有權(quán)限則直接進入
      if (hasRoles) {
        next()
      } else {
        // 沒有權(quán)限的話
        try {
          // 獲取用戶信息
          const { roles } = await store.dispatch('user/getInfo')
          // 生成可訪問路由
          const accessRoutes = await store.dispatch('permission/generateRoutes',                                    roles)
          // 將可訪問路由添加到路由上
          router.addRoutes(accessRoutes)
          // 進入路由
          next({ ...to, replace: true })
        } catch (error) {
          // 如果出現(xiàn)異常  清空路由 
          await store.dispatch('user/resetToken')
          // Message提示錯誤
          Message.error(error || 'Has Error')
          // 跳到login頁面重新登陸
          next(`/login?redirect=${to.path}`)
        }
      }
    }
  } else {
    // 沒有token 也就是沒有登陸的情況下  
    // 判斷是否是白名單(也就是說不需要登陸就可以訪問的路由)
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      // 其他的一律給我跳到login頁面 老老實實的進行登陸
      next(`/login?redirect=${to.path}`)
      NProgress.done()
    }
  }
})


利用beforeEach進行訪問攔截,如果沒登錄,跳轉(zhuǎn)到登錄頁面進行登錄。

4.user/getInfo:src/store/modules/user.js

在這里插入圖片描述

getInfo用于獲取用戶信息并保存到vuex中,后面是一堆的數(shù)據(jù)校驗。

5.permission/generateRoutes:src/store/modules/permission.js

// 判斷是否有權(quán)限
function hasPermission(roles, route) {
  if (route.meta && route.meta.roles) {
    // roles.some => Array.some 相當于是只要有一個滿足就為true 
      
    // 判斷用戶的權(quán)限于當前路由訪問所需要的權(quán)限是否有一個滿足
    // 比如說用戶權(quán)限為 ['one','two']  當前路由訪問所需要權(quán)限為 ['two','three']  那么就說明當前用戶可以訪問這個路由
    return roles.some(role => route.meta.roles.includes(role))
  } else {
    // 默認是可訪問的
    return true
  }
}
// 生成可訪問路由
export function filterAsyncRoutes(routes, roles) {
  const res = []

  routes.forEach(route => {
    const tmp = { ...route }
    // 判斷當前路由是否可以訪問
    if (hasPermission(roles, tmp)) {
      // 如果當前路由還有子路由
      if (tmp.children) {
        // 進行遞歸處理
        tmp.children = filterAsyncRoutes(tmp.children, roles)
      }
      // 將可訪問路由放入數(shù)組中
      res.push(tmp)
    }
  })  
  // 返回
  return res
}
// 為什么要寫這里呢,因為后面的Sidebar組件與這個環(huán)環(huán)相扣
const mutations = {
  SET_ROUTES: (state, routes) => {
    // 添加的路由
    state.addRoutes = routes
    // 將vuex中的路由進行更新
    state.routes = constantRoutes.concat(routes)
  }
}
const actions = {
  generateRoutes({ commit }, roles) {
    return new Promise(resolve => {
      let accessedRoutes
      // 如果roles包含 'admin' 直接可以全部訪問
      if (roles.includes('admin')) {
        accessedRoutes = asyncRoutes || []
      } else {
        // 利用 filterAsyncRoutes 過濾出可訪問的路由
        accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
      }
      // 保存可訪問的路由到store中
      commit('SET_ROUTES', accessedRoutes)
      // 將可訪問路由返回
      resolve(accessedRoutes)
    })
  }
}

generateRoutes就是根據(jù)得到的用戶權(quán)限生成可以訪問的路由。

動態(tài)路由實現(xiàn)
router.addRoutes(accessRoutes)
思維流程圖

在這里插入圖片描述

替換接口實現(xiàn)登錄

第一步替換接口,這里有三個接口,建議一個一個改

在這里插入圖片描述

第二步,將mock數(shù)據(jù)注釋掉

在這里插入圖片描述

第三步,修改環(huán)境配置

在這里插入圖片描述

第四步,啟動項目之后查看eg:登錄接口返回數(shù)據(jù)的格式
如果你不想改那就必須與后端協(xié)商將接口返回數(shù)據(jù)格式與原有接口數(shù)據(jù)結(jié)構(gòu)返回一模一樣(特別重要的一點),如果一模一樣點擊登錄就會跳轉(zhuǎn)。(成功)
如果接口已經(jīng)寫好,那就必須修改以下的文件,格式對不上不僅影響功能,控制臺也會報錯

格式與原有格式返回不同需要修改的文件

1.切入點,先找到登錄接口,所以從user/login開始查找

在這里插入圖片描述

返回res相關(guān)的登錄,獲取用戶信息,退出登錄接口,commit方法傳的值很可能傳錯,token的值都需要控制臺輸出一下判斷正確,以及邏輯傳參是否丟失

在這里插入圖片描述

這里是修改之后的,包括其他相關(guān)接口返回都需要修改

request.js響應(yīng)code碼根據(jù)接口返回情況進行判斷

在這里插入圖片描述

替換接口遇到的問題

在這里插入圖片描述

報錯原因:

項目中使用的是Element UI消息提示Message:import { Message } from ‘element-ui’;

請求響應(yīng)攔截器中err處理的代碼錯誤:

Message.error(response.data.data|| "出現(xiàn)錯誤,請稍后再試");//寫法錯誤,

解決方法:

Message.error({
  message: response.data.data || "出現(xiàn)錯誤,請稍后再試"
})
或
Message({
  type:'error',
  message: response.data.data || "出現(xiàn)錯誤,請稍后再試"
})

如果改完之后發(fā)現(xiàn)還報錯,也可能是改完登錄接口,沒改用戶信息接口,用戶信息接口(或是其他)報錯引發(fā)的

 到此這篇關(guān)于vue-element-admin下載到登錄的一些坑的文章就介紹到這了,更多相關(guān)vue-element-admin下載到登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Vue中導入并讀取Excel數(shù)據(jù)的操作步驟

    在Vue中導入并讀取Excel數(shù)據(jù)的操作步驟

    在工作中遇到需要前端上傳excel文件獲取到相應(yīng)數(shù)據(jù)處理之后傳給后端并且展示上傳文件的數(shù)據(jù),所以本文就來給大家介紹一下Vue中導入并讀取Excel數(shù)據(jù)的操作步驟,需要的朋友可以參考下
    2023-08-08
  • vue中使用swiper失效問題及解決

    vue中使用swiper失效問題及解決

    這篇文章主要介紹了vue中使用swiper失效問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 如何使用ant-design-vue的Table組件

    如何使用ant-design-vue的Table組件

    這篇文章主要介紹了如何使用ant-design-vue的Table組件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Element樹形控件整合帶圖標的下拉菜單(tree+dropdown+input)

    Element樹形控件整合帶圖標的下拉菜單(tree+dropdown+input)

    Element UI 官網(wǎng)提供的樹形控件包含基礎(chǔ)的、可選擇的、自定義節(jié)點內(nèi)容的、帶節(jié)點過濾的以及可拖拽節(jié)點的樹形結(jié)構(gòu),本文實現(xiàn)了樹形控件整合帶圖標的下拉菜單,感興趣的可以了解一下
    2021-07-07
  • vue+webpack 打包文件 404 頁面空白的解決方法

    vue+webpack 打包文件 404 頁面空白的解決方法

    下面小編就為大家分享一篇vue+webpack 打包文件 404 頁面空白的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue 按鈕 權(quán)限控制介紹

    vue 按鈕 權(quán)限控制介紹

    這篇文章主要介紹了vue 按鈕 權(quán)限控制,在日常項目中,會碰到需要根據(jù)后臺接口返回的數(shù)據(jù),來判斷當前用戶的操作權(quán)限,必須當有刪除權(quán)限時,就顯示刪除按鈕,下面我們就來了解一下具體的解決方法,需要的朋友也可以參考一下
    2021-12-12
  • vue使用高德地圖根據(jù)坐標定位點的實現(xiàn)代碼

    vue使用高德地圖根據(jù)坐標定位點的實現(xiàn)代碼

    這篇文章主要介紹了vue使用高德地圖根據(jù)坐標定位點的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Vue中img的src是動態(tài)渲染時不顯示的解決

    Vue中img的src是動態(tài)渲染時不顯示的解決

    今天小編就為大家分享一篇Vue中img的src是動態(tài)渲染時不顯示的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue?element實現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    Vue?element實現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    目前本人再使用vue-element-admin項目時都是通過直接刪除一些用不上的路由來進行側(cè)邊欄的清除,但是其實有一個更加好的辦法來對項目的側(cè)邊欄顯示的內(nèi)用進行管理,就是權(quán)限管理,其實也不知道這個方法好不好,原理上來說時跟直接刪除該路由的方式時一樣的
    2022-08-08
  • 在vue項目中引入高德地圖及其UI組件的方法

    在vue項目中引入高德地圖及其UI組件的方法

    今天小編就為大家分享一篇在vue項目中引入高德地圖及其UI組件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

湟中县| 屏东县| 河间市| 科技| 金阳县| 阳信县| 延边| 成武县| 姚安县| 高邮市| 瓮安县| 友谊县| 福贡县| 历史| 卢氏县| 金秀| 南乐县| 新和县| 客服| 南陵县| 禹州市| 光泽县| 巴马| 梓潼县| 江口县| 堆龙德庆县| 瑞丽市| 潜山县| 十堰市| 揭西县| 枣阳市| 阿克| 白朗县| 昭通市| 柳江县| 林州市| 来安县| 通海县| 高州市| 会同县| 石台县|