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

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.org
npm run dev

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

分配权限页面效果

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

  1. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!

    简介 SmartAdmin由河南·洛阳 1024创新实验室团队研发的一套互联网企业级的通用型中后台解决方案!使用最前沿的前后台技术栈SpringBoot和Vue,前后端分离,我们开源一套漂亮的代码和一 ...

  2. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!

    点击上方蓝字关注「程序员的技术圈子」 今天圈子哥给大家分享一套很不错的企业级的开源项目,最近一直比较忙,所以一直没有写文章,但也是一直想着给大家分享一些有价值的东西,而项目经验可能对于很多的在校学生来 ...

  3. 【毕设精选】基于SpringBoot和Vue的相关系统

    SpringBoot+Vue相关系统 前言 springboot330付费问答系统的设计与实现含文档附源码 springboot325基于Java的企业OA管理系统的设计与实现含文档附源码 sprin ...

  4. shiro+php,一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器

    一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...

  5. (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133

    springboot厨到家服务系统 摘  要 在社会快速发展的影响下,餐饮迅速发展,大大增加了餐饮服务信息管理的数量.多样性.质量等等的要求,使餐饮的管理和运营比过去十年更加困难.依照这一现实为基础, ...

  6. 基于springboot+vue的戒毒所人员管理系统 毕业设计-附源码251514

    Springboot戒毒所人员管理系统 摘要 随着社会各个领域的信息化进程加快,先进的数字和网络技术为公安执法部门提供了高效的沟通手段.在我国公安监管信息化建设作为监管信息化建设的其中一部分,戒毒所人 ...

  7. 基于Springboot+MybatisPlus+Vue的前后端分离电子商城系统

    一.基于Springboot+MybatisPlus+Vue的前后端分离电子商城系统 基于Springboot+MybatisPlus+Vue的前后端分离电子商城系统,主要分为用户端和管理端两个模块. ...

  8. 基于SpringBoot和Vue的个人博客系统

    基于SpringBoot和Vue的个人博客系统 前言 ​ 本期项目分享一个漫威主题的炫酷博客系统,基于SpringBoot和Vue开发的前端分离项目.博客系统分为博客前台和博客后台两部分,游客可以访问 ...

  9. 基于Springboot和VUE的聊天项目,仿PC端微信

    项目介绍 仿PC微言聊天室是基于前后端分离,采用SpringBoot+Vue框架开发的网页版聊天室. 使用了Spring Security安全框架进行密码的加密存储和登录登出等逻辑的处理,以WebSo ...

  10. 基于Springboot+Mybatisplus+Vue的科研项目管理系统

    基于Springboot+Mybatisplus+Vue的科研项目管理系统 1.1 项目概述 开发语言:Java8 数据库:Mysql5 前端技术:bootstrap 后端框架:Springboot ...

最新文章

  1. Recyclerview 添加一个数组
  2. MySQL面试题 | 附答案解析(十七)
  3. openlayers map获取全部feature_tf2.0基础-tf.data与tf.feature_column
  4. opengl开启垂直同步_东风悦达起亚ALL NEW K5正式定名凯酷,预售同步开启
  5. Hadoop详解(五):HDFS HA 和 Federation
  6. 全球与中国节能冷却塔销售渠道分布及市场营销状况分析报告2022-2028年版
  7. [题解]POJ 3683 Priest John's Busiest Day
  8. vue 动态添加class_前端开发:Vue项目实战-Music
  9. 如何让context attribute不出现在configuration界面的available fields列表内
  10. Centos7搭建LAMP+Typecho博客
  11. 两局域网互联解决方案
  12. AndroidDeveloper Weekly No.5
  13. 一次CDN源站负载高的问题排查及解决
  14. Vue:安装Vue Devtools调试工具简便方法解决Cannot find module webpack-cli,@vue-devtools/build-tools等
  15. Pytorch下使用多GPU训练模型
  16. android 模拟器 锁屏,锁屏桌面全模拟 Android 4.0伪装教程
  17. 乐优商城遇到的坑(三)之Centos6.5下安装nginx出错
  18. APP性能测试之功耗测试
  19. SACD ISO提取DSF文件及添加封面
  20. 基于STM32F103的ACS712电流传感器使用教程

热门文章

  1. 计算所汉语词性标记集
  2. 在uni-app中使用阿里巴巴图标库字体图标
  3. 英语表达技巧—委婉地表达消极,否定情感
  4. 论文参考文献尾注引用方法
  5. 毕业论文用尾注添加参考文献
  6. 英文论文检索数据库以及英文文献下载
  7. 思科交换机不同vlan互通
  8. iOS苹果开发者账号-企业账号、公司账号和个人账号的区别
  9. 总结jquery-seat-charts插件使用方法
  10. sspanel v3 配置的完整教程(转)