网站备案目的,济阳做网站多少钱,建立劳动关系应当订立劳动合同,wordpress 文件上传大小4.权限管理模块开发
4.1 权限管理概述
4.1.1 权限管理的意义
后台管理系统中#xff0c;通常需要控制不同的登录用户可以操作的内容。权限管理用于管理系统资源#xff0c;分配用户菜单、资源权限#xff0c;以及验证用户是否有访问资源权限。
4.1.2 RBAC权限设计模型
…4.权限管理模块开发
4.1 权限管理概述
4.1.1 权限管理的意义
后台管理系统中通常需要控制不同的登录用户可以操作的内容。权限管理用于管理系统资源分配用户菜单、资源权限以及验证用户是否有访问资源权限。
4.1.2 RBAC权限设计模型
ACL介绍
ACLAccess Control List访问控制列表 用户 - 权限 ACL 模型权限能直接赋予用户例如将查看订单列表权限赋予某位运营人员用户。但是这种模式的缺点在于但用户量达到一定量级的时候那么就需要对每个用户都进行一次授权操作那么这个工作量就会相当大。 RBAC介绍 Role-Based Access Control基于角色的访问控制
RBAC 模型这是软件设计中最常用的权限管理模型相比于 ACL 模型RBAC 模型在用户与权限之间多了一个元素「角色」通过权限关联角色、角色关联用户的方法来间接地赋予用户权限从而实现用户与权限的解耦。 使用ACL模式时,当系统中存在多个用户拥有相同的权限在分配的时候就要分别为这几个用户指定相同的权限修改时也要为这几个用户的权限进行一一修改。 使用RBAC模式 有了角色后我们只需要为该角色制定好权限后将相同权限的用户都指定为同一个角色即可便于权限管理。 4.1.3 权限管理相关概念
4.1.3.1 用户管理
用户管理中的用户主要是功能系统的使用者这些用户是一个一个的员工个体这些个体往往从两个维度来进行划分行政关系部门架构、业务部门业务架构。
用户管理就是在此两个维度来给员工个体进行关联性的初步分群或者分组。按照行政部门或者按照业务线部门划分后对应部门或者小组内的用户有着基本相似的系统功能使用需求和权限等级 4.1.3.2 权限管理
1) 功能权限管理
功能权限管理指的是用户可看到哪些模块能操作哪些按钮因为企业中的用户拥有不同的角色拥有的职责也是不同的。
菜单级别的权限控制 操作按钮级别的权限控制
在菜单级权限控制的基础上将页面上的操作动作也一并管理维护即页面上的操作按钮简单说就是增、删、改、查等操作的统一授权管理此种管理模式可将权限控制得更加细致、准确。 2) 数据权限管理
数据权限管理指的是用户可看到哪些模块的哪些数据。 例如一个系统中包含多个清单清单 1、清单 2、清单 3系统管理员能对整个系统操作维护也就可以对系统中的所有清单进行操作增、删、改、查 假如分配给二级管理员的是清单 1那么他将只能对清单 1 进行操作增、改、查 如果是普通用户也许只有查看数据的权限没有数据维操作的权限查这里的操作是指系统中所有可点击的按钮权限操作列举的增删改查只是最常见的几种操作而已。 4.1.3.3 角色管理
角色往往是基于业务管理需求而预先在系统中设定好的固定标签每个角色对应明确的系统权限其所拥有的系统权限一般不会随意更改并且角色也不会随着用户的被添加和被移除而进行改变相较于用户管理而言更加稳定
1) 角色是资源或菜单权限的集合。通过角色对不同管理员分配不同的资源、菜单权限。拥有相同权限的用户可以访问相同的菜单和资源。可以理解为权限分组。 2) 通过对用户分配角色来最终实现用户的访问权限控制。一个用户可分配多个角色这些角色的资源、菜单的并集即是用户可访问的全部资源。 4.1.4 权限管理设计
4.1.4.1 权限关系图
权限管理包含用户、角色、菜单、三个个核心组件。通过建立这些组件之间的关联关系来实现用户到菜单的权限控制。
权限管理组件的关系图 4.1.4.2 权限数据库设计 4.2 Spring Security实战
4.2.1 Spring Security 简介
1) Spring Security 是 Spring 家族中的一个安全管理框架可以轻松地与 Spring 应用程序集成, 它提供了一系列的安全服务和工具用于保护企业应用程序的安全性。 Spring Security 提供了许多功能包括身份验证Authentication、授权Authorization、访问控制、密码管理、单点登录Single Sign-On、攻击防范如跨站点脚本攻击、SQL注入攻击等。 2) 认证和授权也是SpringSecurity作为安全框架的核心功能 认证Authentication验证用户的身份以确保用户是合法的可以访问系统中的资源。 这通常涉及用户身份验证例如使用用户名和密码验证用户的身份或者使用第三方身份验证提供程序进行身份验证例如 OAuth2。 授权Authorization控制用户对系统中资源的访问权限。这涉及将用户分配到特定的角色或权限以控制他们可以执行哪些操作和访问哪些资源。 例如管理员可能有更多的权限可以访问和修改系统的高级设置而普通用户则只能访问他们自己的个人资料信息。
3) Spring Security 与 Shiro的区别?
领域不同Spring Security 是 Spring 生态系统的一部分而 Shiro 是一个独立的框架。功能不同Spring Security 提供了更完整的安全性解决方案包括基于过滤器链的身份验证、授权、会话管理、密码管理、单点登录等功能。Shiro 更注重简化开发人员的安全需求提供易于使用和灵活的 API。灵活性不同Shiro 在配置和使用方面更加简单提供了灵活性和易于集成性。相比之下Spring Security 提供了更高级的功能但需要更多的配置和学习成本。
一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多因为相比与SpringSecurityShiro的上手更加的简单。
4.2.2 Spring Security 快速入门
4.2.2.1 创建SpringBoot工程
1) 创建工程
2) 引入依赖 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.8/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.xxx/groupIdartifactIdspringsecurity_example/artifactIdversion0.0.1-SNAPSHOT/versionpropertiesjava.version11/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project4.2.2.2 入门案例编写
启动类 SpringBootApplicationpublic class SpringsecurityExampleApplication {public static void main(String[] args) {SpringApplication.run(SpringsecurityExampleApplication.class, args);}}Controller RestControllerpublic class HelloController {RequestMapping(/hello)public String hello(){return hello;}}引入SpringSecurity依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId/dependency登录页面 访问http://localhost:8080/hello 会跳转到 http://localhost:8080/login 用户名是 user, 密码会打印到控制台 Using generated security password: ac3218c5-3abe-4ac7-bade-3d6487b38bf3退出登录 4.2.2.3 SpringSecurity工作流程分析
SpringSecurity的原理其实就是一个过滤器链内部包含了提供各种功能的过滤器。这里我们可以看看入门案例中的过滤器。 图中只展示了核心过滤器其它的非核心过滤器并没有在图中展示。
UsernamePasswordAuthenticationFilter: 负责处理我们在登陆页面填写了用户名密码后的登陆请求。入门案例的认证工作主要有它负责。ExceptionTranslationFilter处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException 。FilterSecurityInterceptor负责权限校验的过滤器。
Debug分析
添加断点 获取容器中的Bean