国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue 后臺模板 [Vue admin] SanJi Boot Admin Iview

546669204 / 3042人閱讀

摘要:導讀很久沒有寫文章了最近一直在忙之前一直想著可以把項目中的頁面使用進行重寫前幾天算是階段性的完成了這個計劃后期會隨著的模塊不斷增多對其進行對應的升級與擴展簡介項目源碼已托管到碼云上使用技術實現了什么功能基于進行登陸時的認證支持跨域需要后臺配

導讀:

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

簡介:

項目源碼已托管到碼云上

使用技術:

webpack + Vue + Vue Router + iviewUI

實現了什么功能:

基于token進行登陸時的認證 支持跨域 需要后臺配合

修改 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,如果存在的話,則每個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信息并跳轉到登錄頁面
          bus.state.token=undefined;
          router.replace({
            path: "login",
            query: {redirect: router.currentRoute.fullPath}
          })
      }
    }
    return Promise.reject(error.response.data)   // 返回接口返回的錯誤信息
  });
export default axios;

基于Vue Router 在進入頁面前進行權限的前端認證

編寫 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,  // 添加該字段,表示進入這個路由是需要登錄的
      },
      children: [
        {
          path: "http://",
          name: "首頁",
          component: Home,
          meta: {
            requireAuth: true,  // 添加該字段,表示進入這個路由是需要登錄的
          },
        },
        {
          path: "/demo",
          name: "demo",
          component: Demo,
          meta: {
            requireAuth: true,  // 添加該字段,表示進入這個路由是需要登錄的
          },
        }, {
          path: "/icon",
          name: "icon",
          component: Icon,
          meta: {
            requireAuth: true,  // 添加該字段,表示進入這個路由是需要登錄的
          },
        },
        {
          path: "/sys/user",
          name: "用戶管理",
          component: UserManager,
          meta: {
            requireAuth: true,  // 添加該字段,表示進入這個路由是需要登錄的
            permissions:"sys-user"
          }
        },
        {
          path: "/sys/role",
          name: "角色管理",
          component: RoleManager,
          meta: {
            requireAuth: true,  // 添加該字段,表示進入這個路由是需要登錄的
            permissions:"sys-role"
          }
        },
        {
          path: "/403",
          name: "403",
          component: Forbidden,
        },{
          path: "/*",
          name: "404",
          component: NotFound,
          meta: {
            requireAuth: true,  // 添加該字段,表示進入這個路由是需要登錄的
          }
        }
      ]
    }]
});

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) {  // 判斷該路由是否需要登錄權限
      // console.log("token:",bus.state.token!=null,bus.state.token,)
      if (bus.state.token!="undefined"&&bus.state.token) {  // 通過vuex state獲取當前的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}  // 將跳轉的路由path作為參數,登錄成功后跳轉到該路由
        })
      }
    } else {
      next();
    }
  }
})

export default router;

后臺界面主框架 material design 風格

基于material_admin 實現前端界面響應式設計 支持快速切換后臺界面主框架

  
    
      
    
  
目前有哪些功能模塊:

用戶管理
角色管理
demo表格+Icon圖標

界面截圖:

登陸頁面

用戶管理

角色管理

icon

后記

項目已托管 碼云
需要配合 sanji-boot-security 使用

學習資料

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92406.html

相關文章

  • Spring Boot [后臺腳手架] SanJi Boot v2.0 -去繁就簡 重新出發

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

    SoapEye 評論0 收藏0
  • iView 發布后臺管理系統 iview-admin,沒錯,它就是你想要的

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

    HackerShell 評論0 收藏0
  • vue輕量級后臺管理系統基礎模板

    摘要:具體實現請查看和的退出登陸回調方法。現在除了必要的頁面需要在一開始添加到路由表里,其他的頁面都可以根據后臺數據來自動生成。另外,如果在未登陸時要訪問某一指定頁面,會重定向到登陸頁,登陸成功后會自動跳到這個指定頁面。 項目地址 vue-admin-template 在線預覽 更新 2019.6.25 更新 修復路由表沖突問題 退出當前用戶,換賬號重新登陸時,上個賬號和現在的賬號路由表會有...

    2shou 評論0 收藏0
  • Vue iview-admin框架二級菜單改為三級菜單

    摘要:最近在用的后臺模板,從上下載后發現左側導航欄最多支持到二級菜單也發現很多童鞋在問如何實現三級菜單。在實際的應用場景中還是會出現三級菜單的需求的,木有其他好辦法,只能自己手動改代碼了。 最近在用 iview-admin的Vue后臺模板,從git上下載后發現左側導航欄最多支持到二級菜單,也發現很多童鞋在問如何實現三級菜單。在實際的應用場景中還是會出現三級菜單的需求的,木有其他好辦法,只能自...

    codeKK 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<