摘要:導讀很久沒有寫文章了最近一直在忙之前一直想著可以把項目中的頁面使用進行重寫前幾天算是階段性的完成了這個計劃后期會隨著的模塊不斷增多對其進行對應的升級與擴展簡介項目源碼已托管到碼云上使用技術實現了什么功能基于進行登陸時的認證支持跨域需要后臺配
導讀:
很久沒有寫文章了,最近一直在忙,之前一直想著可以把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
摘要:去繁就簡重新出發基于集成一些常用的功能,你只需要基于它做些簡單的修改即可。 SanJi Boot v2.0 去繁就簡 重新出發 基于Spring Boot 集成一些常用的功能,你只需要基于它做些簡單的修改即可。 演示環境: 網址: SanJi-Boot v2.0 用戶名/密碼: admin/admin 功能列表: [x] 權限認證 [x] 權限管理 [x] 用戶管理 [x] 角色管...
摘要:簡介是基于,搭配使用組件庫形成的一套后臺集成解決方案,由前端可視化團隊部分成員開發維護。遵守設計和開發約定,風格統一,設計考究,并且更多功能在不停開發中。 showImg(https://segmentfault.com/img/remote/1460000011603206); 簡介 iView Admin 是基于 Vue.js,搭配使用 iView UI 組件庫形成的一套后臺集成解...
摘要:具體實現請查看和的退出登陸回調方法。現在除了必要的頁面需要在一開始添加到路由表里,其他的頁面都可以根據后臺數據來自動生成。另外,如果在未登陸時要訪問某一指定頁面,會重定向到登陸頁,登陸成功后會自動跳到這個指定頁面。 項目地址 vue-admin-template 在線預覽 更新 2019.6.25 更新 修復路由表沖突問題 退出當前用戶,換賬號重新登陸時,上個賬號和現在的賬號路由表會有...
摘要:最近在用的后臺模板,從上下載后發現左側導航欄最多支持到二級菜單也發現很多童鞋在問如何實現三級菜單。在實際的應用場景中還是會出現三級菜單的需求的,木有其他好辦法,只能自己手動改代碼了。 最近在用 iview-admin的Vue后臺模板,從git上下載后發現左側導航欄最多支持到二級菜單,也發現很多童鞋在問如何實現三級菜單。在實際的應用場景中還是會出現三級菜單的需求的,木有其他好辦法,只能自...
閱讀 5282·2021-09-22 15:59
閱讀 1863·2021-08-23 09:42
閱讀 2566·2019-08-29 18:42
閱讀 3451·2019-08-29 10:55
閱讀 2064·2019-08-27 10:57
閱讀 1763·2019-08-26 18:27
閱讀 2728·2019-08-23 18:26
閱讀 2922·2019-08-23 14:40