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

資訊專欄INFORMATION COLUMN

Vue 后臺(tái)模板 [Vue admin] SanJi Boot Admin Iview

546669204 / 3047人閱讀

摘要:導(dǎo)讀很久沒有寫文章了最近一直在忙之前一直想著可以把項(xiàng)目中的頁面使用進(jìn)行重寫前幾天算是階段性的完成了這個(gè)計(jì)劃后期會(huì)隨著的模塊不斷增多對(duì)其進(jìn)行對(duì)應(yīng)的升級(jí)與擴(kuò)展簡(jiǎn)介項(xiàng)目源碼已托管到碼云上使用技術(shù)實(shí)現(xiàn)了什么功能基于進(jìn)行登陸時(shí)的認(rèn)證支持跨域需要后臺(tái)配

導(dǎo)讀:

很久沒有寫文章了,最近一直在忙,之前一直想著可以把SanJi Boot Security項(xiàng)目中的頁面使用 Vue+webpack 進(jìn)行重寫,前幾天算是階段性的完成了這個(gè)計(jì)劃,后期會(huì)隨著SanJi Boot 的模塊不斷增多 對(duì)其進(jìn)行對(duì)應(yīng)的升級(jí)與擴(kuò)展

簡(jiǎn)介:

項(xiàng)目源碼已托管到碼云上

使用技術(shù):

webpack + Vue + Vue Router + iviewUI

實(shí)現(xiàn)了什么功能:

基于token進(jìn)行登陸時(shí)的認(rèn)證 支持跨域 需要后臺(tái)配合

修改 config/index.js 文件

const path = require("path")

module.exports = {
  dev: {

    // Paths
    assetsSubDirectory: "static",
    assetsPublicPath: "/",
    proxyTable: { "/api":
      {
        target:"http://localhost:8089/api",
        changeOrigin:true,
        pathRewrite:{
        "^/api": ""
        }
      }
    }
   ...
  }
}

自定義 axios src/api/http.js 文件

import router from "../router"
import axios from "axios"
import bus from "../bus"


// axios 配置
axios.defaults.timeout = 30000;

axios.interceptors.request.use(
  config => {
    if (bus.state.token) {  // 判斷是否存在token,如果存在的話,則每個(gè)http header都加上token
      config.headers.Authorization = `${bus.state.token}`;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  });

// http response 攔截器
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 返回 401 清除token信息并跳轉(zhuǎn)到登錄頁面
          bus.state.token=undefined;
          router.replace({
            path: "login",
            query: {redirect: router.currentRoute.fullPath}
          })
      }
    }
    return Promise.reject(error.response.data)   // 返回接口返回的錯(cuò)誤信息
  });
export default axios;

基于Vue Router 在進(jìn)入頁面前進(jìn)行權(quán)限的前端認(rèn)證

編寫 src/router/index.js 文件

import Vue from "vue"
import Router from "vue-router"
import bus from "../bus"

Vue.use(Router)

//base

const Index = resolve => require(["../views/Index"], resolve)

const Login = resolve => require(["../views/Login"], resolve)

const Home = resolve => require(["../views/demo/Home"], resolve)

const Forbidden = resolve => require(["../views/demo/403"], resolve)

const NotFound = resolve => require(["../views/demo/NotFound"], resolve)

const Icon = resolve => require(["../views/demo/Icon"], resolve)

const Demo = resolve => require(["../views/demo/Demo"], resolve)

// sys

const UserManager = resolve => require(["../views/sys/User"], resolve)

const RoleManager = resolve => require(["../views/sys/Role"], resolve)



const router = new Router({
  routes: [
    {
      path: "/login",
      name: "login",
      component: Login
    },
    {
      path: "/",
      name: "index",
      component: Index,
      meta: {
        requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
      },
      children: [
        {
          path: "http://",
          name: "首頁",
          component: Home,
          meta: {
            requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
          },
        },
        {
          path: "/demo",
          name: "demo",
          component: Demo,
          meta: {
            requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
          },
        }, {
          path: "/icon",
          name: "icon",
          component: Icon,
          meta: {
            requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
          },
        },
        {
          path: "/sys/user",
          name: "用戶管理",
          component: UserManager,
          meta: {
            requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
            permissions:"sys-user"
          }
        },
        {
          path: "/sys/role",
          name: "角色管理",
          component: RoleManager,
          meta: {
            requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
            permissions:"sys-role"
          }
        },
        {
          path: "/403",
          name: "403",
          component: Forbidden,
        },{
          path: "/*",
          name: "404",
          component: NotFound,
          meta: {
            requireAuth: true,  // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
          }
        }
      ]
    }]
});

router.beforeEach((to, from, next) => {
  if (to.path === "/logout") {
    bus.state.token = undefined;
    next({
      path: "/login"
    })
  }else{
    bus.state.menu_title = to.name;
    if (to.meta.requireAuth) {  // 判斷該路由是否需要登錄權(quán)限
      // console.log("token:",bus.state.token!=null,bus.state.token,)
      if (bus.state.token!="undefined"&&bus.state.token) {  // 通過vuex state獲取當(dāng)前的token是否存在
        if(to.meta.permissions){
          if(bus.action.hasPermissions(bus,to.meta.permissions)){
            next();
          }else{
            bus.state.menu_title = "403"
            next("/403");
          }
        }else{
          next();
        }
      } else {
        next({
          path: "/login",
          query: {redirect: to.fullPath}  // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由
        })
      }
    } else {
      next();
    }
  }
})

export default router;

后臺(tái)界面主框架 material design 風(fēng)格

基于material_admin 實(shí)現(xiàn)前端界面響應(yīng)式設(shè)計(jì) 支持快速切換后臺(tái)界面主框架

  
    
      
    
  
目前有哪些功能模塊:

用戶管理
角色管理
demo表格+Icon圖標(biāo)

界面截圖:

登陸頁面

用戶管理

角色管理

icon

后記

項(xiàng)目已托管 碼云
需要配合 sanji-boot-security 使用

學(xué)習(xí)資料

快速上手 webpack+vue - vue cli 起手式

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

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

相關(guān)文章

  • Spring Boot [后臺(tái)腳手架] SanJi Boot v2.0 -去繁就簡(jiǎn) 重新出發(fā)

    摘要:去繁就簡(jiǎn)重新出發(fā)基于集成一些常用的功能,你只需要基于它做些簡(jiǎn)單的修改即可。 SanJi Boot v2.0 去繁就簡(jiǎn) 重新出發(fā) 基于Spring Boot 集成一些常用的功能,你只需要基于它做些簡(jiǎn)單的修改即可。 演示環(huán)境: 網(wǎng)址: SanJi-Boot v2.0 用戶名/密碼: admin/admin 功能列表: [x] 權(quán)限認(rèn)證 [x] 權(quán)限管理 [x] 用戶管理 [x] 角色管...

    SoapEye 評(píng)論0 收藏0
  • iView 發(fā)布后臺(tái)管理系統(tǒng) iview-admin,沒錯(cuò),它就是你想要的

    摘要:簡(jiǎn)介是基于,搭配使用組件庫形成的一套后臺(tái)集成解決方案,由前端可視化團(tuán)隊(duì)部分成員開發(fā)維護(hù)。遵守設(shè)計(jì)和開發(fā)約定,風(fēng)格統(tǒng)一,設(shè)計(jì)考究,并且更多功能在不停開發(fā)中。 showImg(https://segmentfault.com/img/remote/1460000011603206); 簡(jiǎn)介 iView Admin 是基于 Vue.js,搭配使用 iView UI 組件庫形成的一套后臺(tái)集成解...

    HackerShell 評(píng)論0 收藏0
  • vue輕量級(jí)后臺(tái)管理系統(tǒng)基礎(chǔ)模板

    摘要:具體實(shí)現(xiàn)請(qǐng)查看和的退出登陸回調(diào)方法。現(xiàn)在除了必要的頁面需要在一開始添加到路由表里,其他的頁面都可以根據(jù)后臺(tái)數(shù)據(jù)來自動(dòng)生成。另外,如果在未登陸時(shí)要訪問某一指定頁面,會(huì)重定向到登陸頁,登陸成功后會(huì)自動(dòng)跳到這個(gè)指定頁面。 項(xiàng)目地址 vue-admin-template 在線預(yù)覽 更新 2019.6.25 更新 修復(fù)路由表沖突問題 退出當(dāng)前用戶,換賬號(hào)重新登陸時(shí),上個(gè)賬號(hào)和現(xiàn)在的賬號(hào)路由表會(huì)有...

    2shou 評(píng)論0 收藏0
  • Vue iview-admin框架二級(jí)菜單改為三級(jí)菜單

    摘要:最近在用的后臺(tái)模板,從上下載后發(fā)現(xiàn)左側(cè)導(dǎo)航欄最多支持到二級(jí)菜單也發(fā)現(xiàn)很多童鞋在問如何實(shí)現(xiàn)三級(jí)菜單。在實(shí)際的應(yīng)用場(chǎng)景中還是會(huì)出現(xiàn)三級(jí)菜單的需求的,木有其他好辦法,只能自己手動(dòng)改代碼了。 最近在用 iview-admin的Vue后臺(tái)模板,從git上下載后發(fā)現(xiàn)左側(cè)導(dǎo)航欄最多支持到二級(jí)菜單,也發(fā)現(xiàn)很多童鞋在問如何實(shí)現(xiàn)三級(jí)菜單。在實(shí)際的應(yīng)用場(chǎng)景中還是會(huì)出現(xiàn)三級(jí)菜單的需求的,木有其他好辦法,只能自...

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

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

0條評(píng)論

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