千家信息网

基于Spring Boot的权限管理怎么实现

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要讲解了"基于Spring Boot的权限管理怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"基于Spring Boot的权限管理怎么
千家信息网最后更新 2024年11月23日基于Spring Boot的权限管理怎么实现

这篇文章主要讲解了"基于Spring Boot的权限管理怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"基于Spring Boot的权限管理怎么实现"吧!

权限管理

权限是每个系统最重要的一部分,一般开发系统都是从权限系统开始。

从控制力度来看,可以将权限管理分为两大类:

  • 功能级权限管理;

  • 数据级权限管理。

从控制方向来看,也可以将权限管理分为两大类:

  • 从系统获取数据,比如查询订单、查询客户资料;

  • 向系统提交数据,比如删除订单、修改客户资料。

从类别上分,有两大类:

  • 认证:你是谁?-识别用户身份。

  • 授权:你能做什么?-限制用户使用的功能。

从控制级别(模型)上分:

  • URL级别-粗粒度

在web.xml中配置一个过滤器filter,在过滤器中,对请求的地址进行解析,字符串截取: url.substring()…把上下文前面的路径都截取掉,剩下user_login.action。 过滤器代码: 以通过查询数据库,来判断,当前登录用户,是否可以访问user_login.action。 url级别控制,每次请求过程中只控制一次 ,相比方法级别权限控制 是粗粒度的 !URL级别权限控制,基于Filter实现。

  • 方法级别-细粒度

aop面向切面的编程,在方法执行之前,进行权限判断,如果没有权限,抛出异常,终止方法的继续运行。 自定义注解 在需要权限控制方法上, 添加需要的权限信息 代理 (Spring AOP ),在目标方法运行时 进行增强 ,通过反射技术获取目标方法上注解中权限 , 查询数据库获取当前登陆用户具有权限,进行比较。 相比URL级别权限控制, 可以控制到服务器端执行的每个方法,一次请求中可以控制多次。

  • 页面级别-自定义标签(显示)

页面显示的权限控制,通常是通过 自定义标签来实现。

  • 数据级别-最细化的(数据)

在每条数据上增加一个字段,该字段记录了权限的值。数据和权限绑定。 代码,你在查询数据的时候,需要去权限和用户对应表中,通过当前登录用户的条件,查询出你的数据权限。然后再将数据权限作为一个条件,放到业务表中进行查询。从而限制了数据的访问。

Apache Shiro

Apache Shiro 可以不依赖任何技术使用, 可以直接和web整合,通常在企业中和Spring 结合使用。

  • Authentication: 认证 - 用户登录

  • Authorization : 授权 -- 功能权限管理

Shiro的框架的体系结构:

Shiro权限控制流程的原理:

  • 应用代码 -- 调用Subject (shiro的Subject 就代表当前登陆用户) 控制权限 -- Subject 在shiro框架内部 调用 Shiro SecurityManager 安全管理器 -- 安全管理器调用 Realm (程序和安全数据连接器 )。

  • Subject要进行任何操作,都必须要调用安全管理器(对我们来说是自动的)。 而安全管理器会调用指定的Realms对象,来连接安全数据。

  • Realms用来编写安全代码逻辑和访问安全数据,是连接程序和安全数据的桥梁。

系统效果

项目基础框架采用全新的Java Web开发框架 -- Spring Boot,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,可快速高效的对单表进行增删改查操作,消除了大量传统XML配置SQL的代码;安全框架采用时下流行的Apache Shiro,可实现对按钮级别的权限控制;前端页面使用Bootstrap构建,主题风格为时下Google最新设计语言Material Design,并提供多套配色以供选择。FEBS意指:Fast,Easy use,Beautiful和Safe。

系统功能模块组成如下所示:

技术选型

后端

  • 基础框架:Spring Boot

  • 持久层框架:Mybatis

  • 安全框架:Apache Shiro

  • 摸板引擎:Thymeleaf

  • 数据库连接池:阿里巴巴Druid

  • 缓存框架:Ehcache

  • 日志打印:logback

  • 其他:fastjson,poi,javacsv,quartz等。

前端

  • 基础框架:Bootstrap4

  • JavaScript框架:jQuery

  • 消息组件:Bootstrap notify

  • 提示框插件:SweetAlert2

  • 树形插件:jsTree

  • 树形表格插件:jqTreeGrid

  • 表格插件:BootstrapTable

  • 表单校验插件:jQuery-validate

  • 多选下拉框插件:multiple-select

  • 图表插件:Highcharts

开发环境

  • 语言:Java

  • IDE:Eclipse Oxygen

  • 依赖管理:Maven

  • 数据库:Oracle 11g & MySQL 5.7

  • 版本管理:SVN,git

系统的效果如下:

感谢各位的阅读,以上就是"基于Spring Boot的权限管理怎么实现"的内容了,经过本文的学习后,相信大家对基于Spring Boot的权限管理怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0