由于项目的后端接口部署在easy-mock上面,因此接口偶尔会挂掉,若是出现登陆网络错误,确定是easy-mock挂了,过段时间就好(感谢easy-mock的开发者以及维护者)javascript
借用大佬的一张图,侵权立删vue
说一行代码有点夸大的意思,感谢vue提供了完善的api,让咱们能够用最少的代码实现功能,这也是我本身想出来的,因此保不齐存在一些考虑不周的问题,若是有问题请评论🤣java
上星期在掘金发布了Vue中后台鉴权的另外一种思路 - 动态路由的实现与优化,有同志在评论下提出了一些问题git
vue单点登陆怎么作github
我以前写过一个全栈项目,vue+koa2+jwt实现单点登陆 + todolist增删改查,有项目介绍,感兴趣的话能够看看😄vuex
若是须要大量的按钮级的权鉴 该怎么作后端
本次文章的主题,这个需求在中后台很常见,在同一个管理表单中,某些按钮是不可让没有权限的人操做的,那么就须要将按钮进行权限的划分,也就是权限颗粒化api
最新案例已经更新到github,欢迎体验~~ vue-element-asyncLogin, 你的start是个人动力!浏览器
很显然这个使用v-if
就能够完成这个需求,撸一个权限数列的公共效验函数,而后在v-if中进行使用,可是这样有一个缺点markdown
每一个须要效验权限的页面都须要引入文件,并进行代码的调用,才能在页面中使用 v-if
示例代码:
src\utils\index.js
import store from '../store' /** * 效验权限 * @param {String} e 权限标号 */ export function permit(e) { return store.getters.roles.includes(e) } 复制代码
src\views\dashboard\index.vue
<el-button v-if="basePermit('edit')" type="warning">修改</el-button>
<el-button v-if="basePermit('view')" type="success">查看</el-button>
import { permit } from '../../utils/index.js'
// ...
methods: {
basePermit(e) {
return permit(e)
}
}
复制代码
这样虽然能够实现,可是很麻烦,不少页面都须要的话,代码繁琐,这不是咱们想要的
对于权限颗粒化来讲,咱们能够感受到,功能比较简单,而且不少页面都要用,那为何不使用一种全局均可以使用的方法来实现呢?
使用自定义指令就能够实现,代码也会变的异常简单
src\utils\directive.js
import Vue from 'vue' import store from '../store' /** * @export 自定义指令 */ export function directive() { Vue.directive('permit', { bind(el, binding) { // 一行三目运算符就可 !store.getters.roles.includes(binding.value) ? el.parentNode.removeChild(el) : {} } }) } 复制代码
src\main.js
import { directive } from './utils/directive' // .... directive() // .... 复制代码
咱们在项目中如何使用自定义指令进行按钮级别的权限控制呢?
很简单
<el-button v-permit="'add'" type="primary">增长</el-button>
<el-button v-permit="'delete'" type="danger">删除</el-button>
<el-button v-permit="'edit'" type="warning">修改</el-button>
<el-button v-permit="'view'" type="success">查看</el-button>
复制代码
完事了~~~~
demo连接在文章底部
你学会了吗😄
项目地址 vue-element-asyncLogin, 若是对你有帮助,请不要吝啬你的start~~😄