导读:

很久没有写文章了,最近一直在忙,之前一直想着可以把SanJi Boot Security项目中的页面使用 Vue+webpack 进行重写,前几天算是阶段性的完成了这个计划,后期会随着SanJi Boot 的模块不断增多 对其进行对应的升级与扩展

简介:

项目源码已托管到码云上

使用技术:

webpack + Vue + Vue Router + iviewUI

实现了什么功能:

基于token进行登陆时的认证 支持跨域 需要后台配合

修改 config/index.js 文件

const path = require('path')module.exports = {dev: {// PathsassetsSubDirectory: '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都加上tokenconfig.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)//baseconst 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)// sysconst 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: '//',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 实现前端界面响应式设计 支持快速切换后台界面主框架

  <Index :current_system="current_system" :system_list="system_list" :user="user" :user_menus="user_menus":menus="menus" :menu_title="bus.state.menu_title"@click_sys_switch="sys_switch" @click_search="search" @open_tab="open_tab"><transition name="slide-left"><router-view></router-view></transition></Index>

目前有哪些功能模块:

用户管理
角色管理
demo表格+Icon图标

界面截图:

登陆页面

用户管理

角色管理

icon

后记

项目已托管 码云
需要配合 sanji-boot-security 使用

学习资料

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

Vue 后台模板 [Vue admin] SanJi Boot Admin Iview相关推荐

  1. Vue后台模板:PanjiaChen

    一.模板下载 简洁版:https://github.com/PanJiaChen/vue-admin-template 加强版:https://github.com/PanJiaChen/vue-el ...

  2. SpringBoot + Vue 用户登入token 之租房管理系统后台 模板

    SpringBoot 项目构建:SpringBoot + MySQL8 + MyBatis-Plus + Redis +定时任务框架(elastic-job) + Spring Security + ...

  3. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  4. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 1. ...

  5. Spring Boot Admin 2 值得了解的新变化

    6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本. 期间Spring Boot Admin 也发布了 2.0.1 兼容它,我在升级pig ...

  6. Spring Boot Admin Reference Guide

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot Admin Reference Guide Johannes Edmeier@joshisteVers ...

  7. 用Spring Boot Admin来监控我们的微服务

    [转载请注明出处]:https://blog.csdn.net/huahao1989/article/details/108039738 1.概述 Spring Boot Admin是一个Web应用程 ...

  8. Spring Boot Admin的使用

    文章目录 配置Admin Server 配置admin client 配置安全主键 Hazelcast集群 Spring Boot Admin的使用 前面的文章我们讲了Spring Boot的Actu ...

  9. Spring Boot Admin –用于管理Spring Boot应用程序的Admin UI

    作为微服务开发的一部分,我们许多人都将Spring Boot与Spring Cloud功能一起使用. 在微服务领域,我们将有许多Spring Boot应用程序将在相同/不同的主机上运行. 如果将Spr ...

最新文章

  1. Linux内核中关于定时器Timer的应用
  2. 从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)
  3. 如何在实际中计划和执行一个机器学习和深度学习项目
  4. JUnit 5 – 早期试用体验 – 第2篇
  5. 浏览器与服务器通信技术——Ajax详解
  6. OpenGL定向光的投影阴影
  7. python3.7下载教程视频_视频 | 我选择Python3.7来学习!顺便把教程分享给大家
  8. 装箱(Boxing)和拆箱(Unboxing)
  9. 安卓机+数据线,带你开发部署人脸识别应用
  10. 9个最常用的python深度学习库
  11. VMware中不能使用ifconfig教程——亲测有效
  12. 8086、80286、80386
  13. 【数据分析案例】如何定义你的“亲密关系”
  14. 微信内置浏览器缓存如何避免,如何防止微信缓存
  15. html简单图片轮播的实现
  16. php转换透明ico,php在线生成ico文件的代码_PHP教程
  17. EXCEL常用操作-----自动编号
  18. fedora34 不显示桌面图标
  19. Python实战:淘宝自动抢购
  20. 项目管理10大知识领域及5大过程

热门文章

  1. 测试Hibernate连接数据库的测试代码
  2. css绘制卡券优惠券_css3 绘制优惠券
  3. 如何改变computed执行_企业管理|执行力差的企业一般有这几个点没做好
  4. Android之自定义横向滚动菜单
  5. Swift中@IBDesignable/@IBInspectable的使用
  6. fastdfs上传文件_SpringBoot+FastDFS搭建分布式文件系统
  7. c++无穷大怎么表示_压缩机接线柱烧坏怎么处理?
  8. Windows下安装Python扩展模块提示“Unable to find vcvarsall.bat”的问题(转载)
  9. for循环console输出结果的问题
  10. [LeetCode] Remove Element