上一节搭好了主框架,但是标签页和侧边栏只是分别展示了各自的菜单,如何将二者联动起来? 定义路由规则:当有 children 属性时,从 children 里取出 path 填充到侧边栏,如: { path: '/', redirect: '/dashboard', name: 'Container', component: Container, children: [ {path: 'dashboard', name: '首页', component: Dashboard, }, {path:…
不同的权限对应不同的路由(菜单),同时侧边栏也根据权限异步生成,实现登录和鉴权思路如下: 登录:点击登录,服务器验证通过后返回一个 token ,然后存到 cookie,再根据 token 拉取用户权限 鉴权:通过 token 获取对应的roles, 计算有权限的路由,使用 router.addRoutes 动态加载路由 数据和操作通过 vuex 进行控制 1 登录 登录按钮 click 事件触发登录动作: /** ...省略的代码 */ this.$store.dispatch('LoginB…
根据权限计算路由的代码 /** * 通过meta.role判断是否与当前用户权限匹配 * @param roles * @param route */ function hasRoles (roles, route) { if (route.meta && route.meta.roles) { return roles.some(role => route.meta.roles.includes(role)) } else { return false } } /** * 递归过滤…
将权限管理应用到系统,首先做好登录, 点击登录按钮后,触发以下动作 vuex 中的 login 动作,设置 cookie vuex 中的 getuserinfo , 获取权限.用户名.头像等 由于目前未使用连接后端服务器,所以使用 mockjs 拦截请求并返回. 在github中查看 1 全局请求拦截 使用axios 封装好请求和响应 src/utils/request.js import axios from 'axios' const clearRequest = { source: { t…
1 会话存储 使用html5的 sessionStorage 对象临时保存会话 // 保存会话 sessionStorage.setItem('user', username) // 删除会话 sessionStorage.removeItem('user', username) 2 将所有未登录会话重定向到 /login 用 vue-router 的 beforeEach 实现 beforeEach 方法接收三个参数: to: Route: 即将要进入的目标 路由对象 from: Route:…
1 会话存储 使用html5的 sessionStorage 对象临时保存会话 // 保存会话 sessionStorage.setItem('user', username) // 删除会话 sessionStorage.removeItem('user', username) 2 将所有未登录会话重定向到 /login 用 vue-router 的 beforeEach 实现beforeEach 方法接收三个参数: to: Route: 即将要进入的目标 路由对象 from: Route:…
1 node环境安装 从 node官网下载安装包 2 vue-cli npm install vue-cli -g 3 新建项目 vue init webpack vue-project 可保持默认,一路回车 完成后 cd vue-project npm run dev 工程启动成功,访问 http://127.0.0.1:8080 可看到页面 win下使用 tree /f 查看此时src下的文件列表: │ App.vue │ main.js │ ├─assets │ logo.png │ ├─…
elementui已经封装好了 el-table 组件,只需要指定 data 数据源即可,因此通常在 vue 实例生命周期的 created 阶段,从数据库获取数据,再将返回的数据绑定到 data 如果后端同学能直接返回前端需要展示的所有数据,那么前端只需要请求一次,多么的和谐,多么完美. 然而凡事皆有例外,比如在已有的table表格增加若干列,而数据从不同的源获取,这时候再修改功能已经完善的接口显然不明智,那么前端使用同步或异步请求来获取数据是比较好的方案. 同步 例如一个文章接口只返回了文章…
有一个菜单树,顶层菜单下面有多个子菜单,子菜单下还有子菜单... 这时候就要用递归处理 1 定义多级菜单 修改 src/router/index.js 的 / 路由 { path: '/', redirect: '/dashboard', name: 'Container', component: Container, children: [ {path: 'dashboard', name: '首页', component: Dashboard, children: [ {path: 'das…
使用font-awesome npm install --save font-awesome 修改 src/main.js 增加 import 'font-awesome/scss/font-awesome.scss' 1 login页面增加图标 效果如下 修改原来的用户输入框 <template slot="prepend"><span class="fa fa-user fa-lg" style="width: 13px"&…