2020-05-28 vue-admin-ui總結(jié)

使用vue-element開發(fā)后臺管理系統(tǒng),簡單記錄一下,element-admin的文檔寫的已經(jīng)很仔細了,一定要好好閱讀文檔,使用的是admin-template這個基礎(chǔ)模板,已經(jīng)可以滿足開發(fā)需求,主要是權(quán)限控制那部分,也是頁面級權(quán)限控制,前端寫的頁面權(quán)限表,所以就和elementadmin框架思想實現(xiàn)思路一致了。仔細閱讀該框架,代碼真心優(yōu)美流暢,學到很多新姿勢技巧,不愧是vue的top1后臺管理框架,多多向大神學習。

cd 路徑 checkout permission-control分支

整體思路是登錄后token保存到cookie,然后拿token獲取用戶對應(yīng)的權(quán)限維護到vuex里,再動態(tài)篩選用戶可以加載的權(quán)限頁面,addRoutes掛載動態(tài)路由,左側(cè)的siderbar也是根據(jù)vuex內(nèi)容動態(tài)管理的導航欄。在login頁面只做獲取token操作,并沒有順帶再去請求useinfo,相關(guān)操作都是在beforeEach攔截器里進行判斷的(es6 await寫法)
hasPermission這個方法應(yīng)該默認返回false
plop-templates 創(chuàng)建空模板,npm run new
重點學習了directives的用法,vue用來做按鈕級的權(quán)限控制方便,強大

vue.config.js

這里主要修改proxy的配置項,來進行代理

  devServer: {
    port: port,
    open: true,
    proxy:{
      [process.env.VUE_APP_BASE_API]:{
        target: 'http://域名/', // 后臺接口域名
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    },
    overlay: {
      warnings: false,
      errors: true
    },
    // before: require('./mock/mock-server.js')
  },
.env.production

# just a flag
ENV = 'production'

# base api
# VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_API = ''

這里要注意,修改完之后,最好,重新啟動一次項目

正常啟動之后,因為關(guān)閉了mock,是無法直接登錄,進去的,所以我們先掉登錄的接口
找到src/api/user.js改成自己的接口地址

export function login(data) {
  return request({
    url: '/user/login',
    method: 'post',
    data
  })
}

接著找到utils/request.js

這里判斷了,token存在的話,將其直接添加到請求頭中,當然這里如果在做加密更好

if (store.getters.token) {
    // let each request carry token
    // ['X-Token'] is a custom headers key
    // please modify it according to the actual situation
    config.headers['X-Token'] = getToken()
}
request.js中還要將判斷的狀態(tài)碼改成真實后端返回的成功狀態(tài)碼,一般都是200
    if (res.code !== 200) {
      Message({
        message: res.message || 'Error',
        type: 'error',
        duration: 5 * 1000
      })

最后找到store/modules/user.js

這里是登錄的actions,可以看到登錄請求回來的是token,然后講token提交到了SET_TOKEN,后端返回的token如果在data下,則不需要修改,要是數(shù)據(jù)結(jié)構(gòu)有變化,再進行相應(yīng)的修改

  login({ commit }, userInfo) {
    const { username, password } = userInfo
    return new Promise((resolve, reject) => {
      login({ username: username.trim(), password: password }).then(response => {
        const { data } = response
        commit('SET_TOKEN', data.token)
        setToken(data.token)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },
以上配置都沒有問題,那么登錄接口就基本沒問題了,不過此時還進不去主頁。

這里請求完登錄之后,再跳轉(zhuǎn)首頁的時候,請求了info接口,因此,還需要一個用戶信息的接口,這里只需要講api/user.js中的user/info接口改成自己的便可,注意前后端字段要對上,如此,便能進入首頁。
3.修改頁面設(shè)置項
找到src/views/settings.js

module.exports = {
  title: 'Vue Element Admin', //網(wǎng)站標題
  showSettings: true,//是否展示頁面設(shè)置
  tagsView: true,//是否展示標簽頁
  fixedHeader: false,//是否固定頭部
  sidebarLogo: false,//是否在左側(cè)導航展示logo
  supportPinyinSearch: true,
  errorLog: 'production'
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容