基于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的权限管理怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!