经常有朋友问我权限系统怎么做。
闲来无事,把近几年我做项目用到的权限管理框架,整理了个demo出来,供需要的小伙伴们拿来参考使用,避免重复造轮子。
整个系统涉及到技术:
1、JWT
2、Mybatis-Puls
3、SpringAOP
4、Mysql+Redis
5、VUE+Element-UI
项目采用了当前比较流行的前后端分离模式,便于前后端技术分工合作
下面是截图预览
后端权限限制也很简单,只要加个注解就可以了,可以做到前端单个按钮资源的控制,或后台单个接口权限的控制
前端权限使用
<div class="head-container">
<el-button-group>
<el-button type="warning" v-permission="['superAdmin','manage_menu:add']" icon="el-icon-plus" @click="addMenu">新增</el-button>
<el-button type="primary" v-permission="['superAdmin','manage_menu:edit']" icon="el-icon-edit" @click="editMenu">编辑</el-button>
<el-button type="danger" v-permission="['superAdmin','manage_menu:del']" icon="el-icon-delete" @click="deleteMenu">删除</el-button>
</el-button-group>
</div>
或者:
<el-table-column label="是否可用">
<template slot-scope="scope">
<el-switch @change="changeStatus(scope.row)" :disabled="scope.row.phone==='admin'||!checkPermission('manager:enable')"
v-model="scope.row.enable"
active-color="#13ce66"
inactive-color="#dcdfe6">
</el-switch>
</template>
</el-table-column>
后端接口权限控制:
@PutMapping("changeEnable/{id}")
@Permission("hasAuth('managerRole:enable')")
public ResponseEntity<Object> changeEnable(@PathVariable long id) throws Exception {
roleService.changeEnable(id);
return success();
}
@DeleteMapping("{id}")
@Permission("hasAuth('managerRole:del')")
public ResponseEntity<Object> delete(@PathVariable long id) throws Exception {
roleService.deleteRole(id);
return success();
}
整个项目就是个比较全面的权限系统框架,需要的朋友,可以在此基础上做项目开发,也可以参考本项目的逻辑设计自己的权限系统。由于是使用的jwt作为用户身份验证,因此稍加改动下,即可适配微服务项目使用,如有特别需要可留言,我抽空再整理个微服务版的。
使用此项目还是需要一定的编程基础及动手变通能力的,编程小白,纯拿来主义着慎行。
源码传送门: