往期精彩推荐

高逼格开源聊天系统 推荐 Spring+Netty+Websocket实现

java人关注这个github开源项目,你会嫌弃手上的笔试面试题资料

2020年一线大厂java笔试面试题分享!锋哥挥泪整理!

杠把子级别的Java开源后台管理系统

这个Java分布式快速开发平台比较厉害!!!

炸街版Java开源OA系统,你值得学习

大伙再搞权限系统的时候,权限控制到菜单很容易,但是很多情况要控制到按钮接口级别,这个时候设计就要研究下了。方案好几种,锋哥这里推荐一个不错的开源方案,大伙可以参考学习下。Spring Boot-Shiro-Vue实现;

github开源地址:

https://github.com/Heeexy/SpringBoot-Shiro-Vue

系统演示地址:

http://g.heeexy.com/

Spring Boot-Shiro-Vue

提供一套基于SpringBoot-shiro-vue的权限管理思路.

前后端都加以控制,做到按钮/接口级别的权限

DEMO

测试地址

admin/123456 管理员身份登录,可以新增用户,角色.

角色可以分配权限

控制菜单是否显示,新增/删除按钮是否显示

设计思路

核心

每个登录用户拥有各自的N条权限,比如 文章:查看/编辑/发布/删除

后端

基于 RBAC新解 .

通常我们的权限设计都是 用户--角色--权限 ,其中角色是我们写代码的人没法控制的,它可以有多条权限,每个用户又可以设计为拥有多个角色.因此如果从角色着手进行权限验证,系统都必须根据用户的配置动起来,非常复杂.

所以我们后台设计的关键点就在于: 后台接口只验证权限,不看角色.

角色的作用其实只是用来管理分配权限的,真正的验证只验证权限 ,而不去管你是否是那种角色.体现在代码上就是接口上注解为

@RequiresPermissions("article:add")

而不是

@RequiresRoles(value = {"admin","manager","writer"}, logical = Logical.OR)

前端

采用了vueAdmin-template , ElementUI , 权限设计思路也是参考了 vueAdmin 的动态路由的设计.

后端负责了接口的安全性,而前端之所以要做权限处理,最主要的目的就是隐藏掉不具有权限的菜单(路由)和按钮.

登录系统后,后端返回此用户的权限信息,比如

 "userPermission":{"menuList":["role","user","article"         ],"roleId":1,"nickname":"超级用户","roleName":"管理员","permissionList":["article:list","article:add","user:list",         ],"userId":10003      }

根据menuList判断给此用户生成哪些路由, 根据permissionList判断给用户显示哪些按钮,能请求哪些接口.

数据库

最主要的是要有一张本系统内的全部权限明细表,比如下面这样

如果某用户拥有表格中前五条权限,就可以查出他就拥有article和user两个菜单,至于页面内是否显示(新增)(修改)按钮,就根据他的permissionList来判断.

具体实现

有了思路,就可以根据各自的业务进行实现,本项目在此进行了简单的实现,后端代码在back文件夹,前端代码在vue文件夹.前端启动只需

npm install --registry=https://registry.npm.taobao.orgnpm run dev

后端就是常规的shiro配置,前端代码如果看不明白,可以参考前端权限代码说明

分配权限页面效果

长按关注锋哥微信公众号,非常感谢;

 加锋哥微信 拉你进微信群扯淡^_^:

tp5权限管理代码_权限系统控制到按钮级别开源推荐 Spring BootShiroVue相关推荐

  1. springboot接口安全性_权限系统控制到按钮级别开源推荐 Spring Boot-Shiro-Vue

    再搞权限系统的时候,权限控制到菜单很容易,但是很多情况要控制到按钮接口级别,这个时候设计就要研究下了.方案好几种,这里推荐一个不错的开源方案,大伙可以参考学习下. Spring Boot-Shiro- ...

  2. JAVAWEB开发之权限管理(一)——权限管理详解(权限管理原理以及方案)、不使用权限框架的原始授权方式详解

    知识清单 1.了解基于资源的权限管理方式 2. 掌握权限数据模型 3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理) 4. shiro实现用户认证 5. shiro实现用户 ...

  3. mysql用户角色权限代码_用户权限管理代码

    用户权限管理代码 define('PATTERN_MODE_INT',                1); define('PATTERN_MODE_STRING',        2); func ...

  4. java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...

    一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...

  5. Yii2.0 后台UI框架以及权限管理扩展实现权限菜单管理

    Yii2.0 后台UI框架以及权限管理扩展实现权限菜单管理 一.安装后台框架ui 二.安装权限管理扩展 三.实现权限菜单管理 一.安装后台框架ui composer require dmstr/yii ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  7. Android权限管理之Permission权限机制及使用

    前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...

  8. linux查询默认权限命令,Linux权限管理之基本权限

    Linux权限管理之基本权限 1.文件权限: -rw-r--r-- :         r 读   w 写     x 执行 -:   文件类型(- 文件  d 目录  l软链接文件)rw- r-- ...

  9. linux组权限管理,linux 用户组权限管理(示例代码)

    权限管理作为在学linux的人来说,觉得无所为事.如何来保障个人的隐私以及个人工作环境,你学完这个之后你就觉得权限是多么多么的重要. #ls -l 1.sh - rw-r--r-- 1 root ro ...

最新文章

  1. Android巩固之事件分发机制
  2. PPT绘制示意图视频+文字版本-一篇就学会
  3. 10个机器学习的JavaScript示例
  4. h5如何动态获取键盘高度_动态获取键盘高度
  5. 阿里云发布飞天专有云敏捷版 支持Docker企业版
  6. HDU1040-As Easy As A+B
  7. python爬取12306_python爬取12306的车次信息
  8. socks代理转http代理
  9. 怎么用电脑把优酷的kux格式转换成mp4格式
  10. thinkpad x250装黑苹果教程_GitHub - siweijianrong/Hackintosh: Hackintosh黑苹果长期维护机型EFI及安装教程整理...
  11. 模电:集成运算放大器2
  12. Linux基础篇(五):远程操作
  13. 免费开放可转盲文字库 阿里健康大药房呼吁关注视障群体用药安全
  14. 理解本真的REST架构风格
  15. mysql快速建表工具_我所知道的MYSQL快速建表的3种方法
  16. 树莓派配置IP地址和wifi方法
  17. matlab光学远轴光的折射,摄影光学基础知识-光的折射定律
  18. 【云原生-K8s】kubeadm搭建安装k8s集群v1.25版本完整教程【docker、网络插件calico、中间层cri-docker】
  19. 用友T3软件超值的打印秘籍,你值得收藏!
  20. 你好,C++(6)2.3 C++兵器谱

热门文章

  1. 粗糙集(Rough sets)、模糊逻辑(Fuzzy Logic)
  2. 14.相同的树另一棵树的子树检查子树二叉树中的列表(教你们使用相同的套路快速解决这四道题)
  3. 目标检测 - YOLO9000 : Better, Faster, Stronger
  4. LeetCode 268. Missing Number--Python解法--数学题
  5. argis怎么关掉对象捕捉_你和你的网恋对象,都怎么样了?
  6. 阿里云视频点播获取视频点播的video信息
  7. mysql本周函数_MySQL的YEARWEEK函数以及查询本周数据_MySQL
  8. asp .net mvc ajax 传值到后台,并放回JSon值解析
  9. Python的零基础超详细讲解(第二天)-Python的基础语法1
  10. 为了撩妹用Python做了一个办公小工具,她说棒极了