柳州城市的城乡建设管理局网站阿里网站制作需要多少钱

张小明 2026/1/2 22:03:54
柳州城市的城乡建设管理局网站,阿里网站制作需要多少钱,门户系统1号线wordpress,做详情页网站结合#xff08;Spring Security MyBatis-Plus#xff09;以及数据中台的通用架构#xff0c;梳理了一套完整的权限设计方案#xff0c;包含架构分层、核心设计以及时序交互流程。#x1f3d7;️ 一、 整体架构设计在数据中台中#xff0c;权限体系通常分为三个维度Spring Security MyBatis-Plus以及数据中台的通用架构梳理了一套完整的权限设计方案包含架构分层、核心设计以及时序交互流程。️ 一、 整体架构设计在数据中台中权限体系通常分为三个维度你提到的这三者各司其职功能权限 (Spring Security)控制“你能看什么页面、点什么按钮”。基于 RBAC基于角色的访问控制模型通过菜单和按钮权限控制前端界面的可见性。项目权限 (MyBatis-Plus)控制“你能进哪个项目”。数据中台通常涉及多项目隔离通过拦截 SQL在查询项目相关数据时自动注入project_id X的过滤条件。数据权限 (MyBatis-Plus)控制“你能看项目里的哪些数据行/列”。即行级权限如仅看本部门数据和列级权限如薪资字段对普通员工不可见。⚙️ 二、 核心实现方案1. 功能权限基于 Spring Security实现方式使用 Spring Security 的PreAuthorize注解配合 SpELSpring Expression Language。原理用户登录时UserDetailsService从数据库加载用户的角色和权限列表如project:admin,data:query。在 Controller 或 Service 方法上使用注解例如PreAuthorize(hasAuthority(DATA_QUERY))。对于项目级别的入口控制可以结合路径变量例如PreAuthorize(#projectId authentication.projectId)来校验用户是否有权访问该特定项目。2. 项目权限 数据权限基于 MyBatis-Plus 拦截器实现方式利用 MyBatis-Plus 的DataPermissionInterceptor或自定义InnerInterceptor。原理拦截 SQL在 SQL 执行前beforeQuery拦截所有的SELECT语句。解析注解检查 Mapper 或 Service 方法上是否有自定义的权限注解如DataScope。动态拼接项目权限根据当前登录用户上下文中的currentProjectId自动拼接AND project_id ?。数据权限根据用户的角色如部门经理、普通员工拼接不同的 WHERE 条件例如AND dept_id IN (1,2)。⏱️ 三、 请求完整的时序交互这是一个用户发起数据查询请求例如查询某项目下的销售报表的完整时序图解 1. 认证与功能鉴权阶段用户请求用户携带 Token如 JWT访问数据中台的查询接口/api/report/sales?projectId100。JWT 过滤器JwtAuthenticationTokenFilter拦截请求解析 Token将用户信息包含用户ID、角色列表、权限字符串存入SecurityContextHolder。Spring Security 鉴权框架检查该接口所需的权限例如REPORT_VIEW。对比当前用户拥有的权限。结果如果用户没有功能权限直接返回 403 Forbidden请求结束如果有权限进入业务逻辑层。 2. 项目与数据权限处理阶段业务逻辑处理Controller 调用 Service 层方法。注解识别假设 Service 方法上标注了DataScope(deptAlias d, projectAlias p)。MyBatis-Plus 拦截DataPermissionInterceptor拦截到即将执行的 SQL 查询。获取上下文从 ThreadLocal 或 SecurityContext 中获取当前用户对象。生成过滤片段项目权限检查用户是否属于项目 100生成p.id 100。数据权限检查用户角色如“华东区经理”生成d.region EastChina。SQL 改写拦截器将原始 SQLSELECT * FROM sales s JOIN dept d ON s.dept_id d.id动态改写为SELECT * FROM sales s JOIN dept d ON s.dept_id d.id WHERE p.id 100 AND d.region EastChina。 3. 数据执行与返回数据库执行改写后的 SQL 发送到数据库执行。结果返回数据库返回过滤后的数据集给用户。 四、 权限类型与技术实现对照表权限类型控制粒度核心技术实现机制典型场景功能权限菜单/按钮/APISpring SecurityPreAuthorize注解 角色权限匹配普通用户看不到“系统管理”菜单项目权限项目/工作空间MyBatis-Plus 拦截器SQL 拦截 project_id自动注入用户 A 只能看到项目 A 的数据看不到项目 B数据权限数据行/列MyBatis-Plus 拦截器SQL 拦截 动态 WHERE 条件拼接销售员只能看自己的订单经理看全组订单 五、 关键代码逻辑示意1. MyBatis-Plus 拦截器核心逻辑// 实现 InnerInterceptor 接口 public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) { // 1. 获取当前用户信息 LoginUser user SecurityUtils.getLoginUser(); // 2. 判断是否需要数据权限排除管理员 if (user.isAdmin()) return; // 3. 获取注解配置的表别名 String deptAlias getDataScopeAlias(ms, dept); String projectAlias getDataScopeAlias(ms, project); // 4. 拼接 SQL 片段 StringBuilder sqlFilter new StringBuilder(); // 项目权限限制只能看自己加入的项目 sqlFilter.append(projectAlias).append(.id IN ().append(user.getProjectIds()).append() ); // 数据权限根据角色限制数据范围 (例如仅本人、本部门) if (dept.equals(user.getRole().getDataScopeType())) { sqlFilter.append( OR ).append(deptAlias).append(.id ).append(user.getDeptId()); } // 5. 将拼接好的 SQL 条件注入到查询参数中 // MyBatis-Plus 会自动将这个条件合并到原生 SQL 的 WHERE 后面 injectFilterToParameter(parameter, sqlFilter.toString()); }2. Service 层使用注解Service public class ReportService { // dataScope 注解指定了部门表别名和项目表别名 DataScope(deptAlias d, projectAlias p) public ListSalesReport getReports(Long projectId) { // 这里写正常的业务查询无需手动写 project_id 和 dept_id 的过滤 // 拦截器会自动帮你加上 return salesMapper.selectReports(projectId); } } 六、 总结建议这套方案的优势在于解耦和透明开发友好业务开发人员在写 Mapper 时只需要关注业务逻辑 SQL不需要在每个 SQL 里都手写WHERE project_id ?由拦截器统一处理。安全统一Spring Security 负责大门功能的钥匙MyBatis-Plus 负责数据库数据的过滤网两者结合能有效防止越权访问。在实际落地时先搭建好用户-角色-权限的管理后台确保管理员可以灵活配置某个角色是“本部门数据”还是“全部数据”并将这些配置存储在数据库中供拦截器读取。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站改版提交注册域名多长时间

2024年OpenWrt LuCI主题终极选择指南:4大主题深度评测与实战配置 【免费下载链接】luci LuCI - OpenWrt Configuration Interface 项目地址: https://gitcode.com/gh_mirrors/lu/luci 还在为OpenWrt单调的管理界面感到困扰?想要一个既美观又高效的…

张小明 2025/12/24 5:51:43 网站建设

ota平台网站建设书籍网站开发多少钱

ThinkPad风扇智能控制:用TPFanCtrl2实现Windows系统精准调速 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 笔记本电脑的风扇控制一直是影响使用体验的关键…

张小明 2025/12/24 8:07:42 网站建设

做交流网站在婚恋网站做销售好吗

Cursor Pro免费激活终极指南:从限制突破到永久使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial …

张小明 2025/12/24 0:23:32 网站建设

物流系统规划课程建设网站揭阳专业网站制作公司

在软件测试岗位的招聘中,行为面试已成为评估候选人综合素质的核心环节。与单纯考察技术能力不同,行为面试通过追溯候选人过去的工作经历,预测其未来的工作表现。本文结合软件测试岗位特性,为从业者梳理典型问题类型与高通过率回答…

张小明 2025/12/24 14:25:06 网站建设

网站建设价格费用网站开发进度时间表

结合 Spring AOP (面向切面编程) 和 Alibaba EasyExcel。 EasyExcel 是阿里巴巴开源的工具,相比 Apache POI,它极其节省内存(基于流式读写),并且对注解支持非常好。1. 引入依赖 (Maven) 在 pom.xml 中引入 EasyExcel 和…

张小明 2026/1/1 3:42:37 网站建设

网站数据库空间中信建设有限责任公司定州

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 https://www.paperzz.cc/weighthttps://www.paperzz.cc/weight 副标题: 硕士论文查重率低≠安全!AIGC检测才是盲审“生死线”!Paperzz三步操作,10分钟将AI痕迹…

张小明 2025/12/27 14:57:45 网站建设