前、后端分离权限控制设计和实现思路

# 功能

=========

部分功能有事需要单独控制权限,比如用户管理页面可能允许多个角色查看,但是其中的"创建用户"功能只允许某一个角色使用,那么仅仅使用页面权限是不够。所以需要细粒度的功能权限控制。

网上的方案都是说:根据资源控制增、删、改、查等等,比如针对用户就是用户的创建、修改、删除、查询等。但是在我的实际使用中发现并不切合实际,最起码对像我这种管理后台,资源并不单纯的增删改查,可能有其他地方的其他操作中也会对此用户资源造成影响,比如禁用、删除角色也要禁用、删除用户,那么这个权限到底属于角色的权限还是属于用户的权限,或者后台又改了,角色又影响了其他资源或者不再对用户进行操作,都会影响权限控制。

所以更合理的方法应该为将每个功能单独进行控制并和页面进行关联,且不限定必须是增、删、改、查四种,可以任意定制,只需要与前后端开发约定一个唯一的标识即可。

如上的例子中,用户管理页面下有用户各种功能,角色管理页面中也有个角色禁用、删除功能,可以分别定义标识为roledisable、roledelete,如果拥有roledelete权限即可,即使没有userdelete权限,也可以直接删除用户,否则就不要给其role_delete权限。

用户登录后,从数据库获取其所拥有的的权限列表并存入vuex,包含页面和功能对应关系,例如页面name为user:{user: [‘userdelete’, ‘userquery’]},页面中根据删除按钮可以v-if="hasPermission(‘user_delete’)"判断即可

页面功能管理:

图片

获取用户拥有的权限:

图片

# 角色

=========

一个角色类似于一个身份或岗位,每个角色有自己的权限范围。

  1. 一个角色可以拥有多个页面权限。

  2. 一个角色可以拥有多个功能权限。

角色管理:

图片

角色分配权限:

图片

# 用户

=========

用户可以创建、删除,一个用户随时可能变更工作内容,或者身兼数职,所以可以为其分配一个或者多个角色,他拥有的角色的权限就是他的权限。此时已经可以打通权限前端的权限分配,用户-角色-页面权限、功能权限。

用户管理:

图片

用户分配角色:

图片

# 前端效果

===========

前端页面菜单效果:

图片

# 后端权限

===========

传统前后端不分离的情况下,路由都在后端统一管理,简单的方法比如用户管理页面/user/那么他里面使用的接口都使用/user/add、/user/delete等相同前缀,那么只要判断用户拥有/user/权限就可以访问/user/*所有接口。

前后端分离后面临的问题:

  1. 前、后端分别有自己的路由,且一个页面会同时调后端多个不同模块下的接口,这样一来就无法通过以上传统方式判断权限。

如此一来吗,就需要有前端页面到后端接口的管理,明确一个页面会调用哪几个接口。这样当授权用户页面时,系统就可以根据此关系推断哪些接口具有权限。

# 接口

=========

方案:

  1. 需要控制权限的接口进行上传管理(可以做成管理页面)

  2. 每个页面和功能可以关联多个接口,比如用户页面关联了用户查询接口和用户编辑接口,用户删除功能关联用户删除接口

  3. 后端对请求的路径进行判断,用户->角色->页面/功能->接口,拥有接口权限即允许访问

  4. 前后端分团队开发,不容易一一对照,且前端有自己的路由(此路由受限于代码组织结构)等等,无法使用传统方式简单处理

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
、数据库、Linux、缓存、消息中间件、源码等相关面试题。**

[外链图片转存中…(img-O23tskJA-1712855935542)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 针对SpringBootVue前后端分离设计培养计划管理系统的设计思路和方法,一般可遵循以下步骤: 1. 需求分析:明确系统需求和功能模块,确定系统开发目标和范围。 2. 概要设计设计系统的整体框架和模块划分,确定系统的技术架构、数据模型等。 3. 详细设计:具体设计系统各个模块的功能实现,制定接口规范和数据库设计方案。 4. 编码实现:根据设计文档进行编码实现,包括端Vue和后端SpringBoot的开发。 5. 测试验收:完成编码后进行单元测试和综合测试,保证系统的质量和稳定性。 6. 部署上线:将系统部署到服务器上,并进行线上测试,确保系统可以正常运行。 在这个过程中,需要注意前后端分离设计的特点,即端和后端开发相互独立,通过接口进行数据交互。因此,需要制定清晰的接口规范,确保数据传输的正确性和安全性。同时,还需要注意端和后端技术的兼容性,确保两个端能够无缝对接。 总之,针对SpringBootVue前后端分离设计培养计划管理系统的设计思路和方法,需要在需求分析、概要设计、详细设计、编码实现、测试验收和部署上线等方面进行综合考虑,以确保系统的高效、稳定、安全和可维护性。 ### 回答2: Spring Boot和Vue前后端分离设计是一种常用的Web应用设计模式,在设计培养计划管理系统时,可以采用以下思路和方法: 1. 前后端分离前后端分离是指端使用Vue进行页面渲染,后端使用Spring Boot提供接口服务。通过这种设计模式,可以有效地解耦后端逻辑,提高开发效率和系统性能。 2. 定义数据模型:根据培养计划管理系统的需求,定义必要的数据模型。这些模型可以包括学生、课程、考试等信息。使用Java对象模型或者数据库表结构来表示这些模型。 3. 设计接口:基于前后端分离设计思路,使用Spring Boot设计实现RESTful接口。这些接口可以包括学生信息查询、课程安排、考试成绩录入等功能。通过严格定义接口规范,端可以通过调用这些接口获取所需的数据。 4. 端页面设计:使用Vue进行端页面的设计和开发。根据系统需求,设计学生信息展示、课程安排、考试成绩录入等页面。使用Vue提供的组件和工具,实现页面的交互和数据展示。 5. 数据交互:端通过调用后端提供的接口获取所需数据。使用Vue的Ajax、Axios等工具,发送HTTP请求并解析返回的数据。端可以根据需要进行数据筛选、排序和展示。 6. 系统安全:为了保障系统的安全性,可以在后端使用Spring Security等框架进行权限控制和身份认证。通过定义角色和权限,限制用户操作和访问敏感数据。 7. 测试和部署:在开发完成后,进行系统测试和调试。可以使用JUnit等测试框架对后端接口进行单元测试,使用Vue提供的测试工具对端页面进行测试。最后,将后端部署到服务器上,并将端页面打包部署到Web服务器上。 通过采用Spring Boot和Vue前后端分离设计,可以实现系统开发的高效和灵活性。前后端分离设计模式可以有效解耦后端逻辑,提高系统性能和扩展性。同时,Spring Boot和Vue作为流行的开发框架,拥有庞大的社区支持和丰富的开发资源,可以大大提升系统开发的效率和质量。 ### 回答3: SpringBoot和Vue是目非常流行的前后端分离开发框架。设计和培养一个计划管理系统需要以下步骤和方法。 1.需求分析:首先,要清楚定义计划管理系统的功能和需求,包括用户管理、计划创建、查看和修改计划、日历展示等功能。 2.数据库设计:根据需求设计数据库模型,确定需要的表和字段,并建立相应的关系。 3.SpringBoot后端开发:使用SpringBoot搭建后端开发环境,根据需求编写相应的控制器、服务和数据访问层。使用Spring Security实现用户认证和授权。 4.Vue端开发:使用Vue框架搭建端开发环境,设计和开发用户界面。使用Vue Router实现页面导航和路由跳转。使用Axios进行和后端的数据交互。 5.后端接口设计:定义后端之间的接口规范,包括请求方式、参数和返回结果的格式。使用JSON进行数据交互。 6.后端联调:后端开发完成后,进行联调测试,确保后端的数据交互和功能实现的正确性。 7.部署和上线:将后端代码打包成jar包或war包,将端代码打包成静态资源,部署到服务器上,配置好相应的环境和数据库信息,使系统能在服务器上运行。 以上是一般的设计思路和方法,当然具体实现还有很多细节需要考虑,比如数据校验、异常处理、权限管理等等。一个好的计划管理系统应该具备良好的用户体验和响应速度,因此在设计和开发过程中需要注重系统的性能优化。同时,定期进行系统的维护和更新,修复漏洞和改进功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值