做网站手机端需要pc端的源代码吗南宁网站建设索q479185700

张小明 2026/1/19 19:07:57
做网站手机端需要pc端的源代码吗,南宁网站建设索q479185700,惠州seo排名,vi包括哪些内容结合#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进行投诉反馈,一经查实,立即删除!

网站色彩心理铁总建设函网站

ESP32与Arduino的深度融合:从原理到实战 为什么是ESP32 Arduino?一个开发者的视角 如果你正在做物联网项目,可能已经面临这些挑战: 想用Wi-Fi上传传感器数据,但裸写SDK太复杂; 看中ESP32的双核性能和低功…

张小明 2026/1/17 17:29:35 网站建设

中国建设网站的公司专门做特卖的网站是什么意思

揭秘Godot项目逆向工程:从游戏到源码的魔法之旅 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/gh_mirrors/gd/gdsdecomp 你是否曾经面对一个精美的Godot游戏,想知道它是如何构建的?或者…

张小明 2026/1/17 17:29:36 网站建设

js建设网站网站建设与维护教学课件

终极网络性能测试指南:iperf3跨平台工具完整使用教程 【免费下载链接】iperf3网络测试工具-Win64AndroidAPK iperf3 网络测试工具 - Win64 Android APK 项目地址: https://gitcode.com/open-source-toolkit/01598 iperf3是一款专业的网络性能测试工具&#…

张小明 2026/1/17 17:29:36 网站建设

外贸网站建设制作教程唯美个人网站欣赏

强力解锁:3分钟解决QQ音乐加密文件无法播放的终极方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转…

张小明 2026/1/17 17:29:37 网站建设

长春新建火车站网站做app的软件叫什么

你是否曾经在漫长的编程过程中感到枯燥乏味?是否希望有个可爱的小伙伴陪伴你度过每一次键盘敲击?BongoCat正是这样一个充满创意的开源项目,它将呆萌的猫咪形象与你的电脑操作完美结合,为日常工作注入无限乐趣。 【免费下载链接】B…

张小明 2026/1/17 17:29:38 网站建设

东莞网站开发培训哪里有wordpress win10主题

还在为浏览器警告"不安全"而烦恼?想要快速为网站添加HTTPS加密保护却不知从何入手?本文为你带来最完整的Certbot HTTPS配置指南,从零开始手把手教你实现网站全站加密,让安全等级瞬间飙升!🚀 【免…

张小明 2026/1/17 17:29:41 网站建设