怎样做联盟网站有网络但浏览器打不开网页

张小明 2026/1/9 3:16:41
怎样做联盟网站,有网络但浏览器打不开网页,服务公司英文,网站建设亿金手指科杰什么是TelnantIgnore 有些系统设计时#xff0c;将不同公司(租户)的数据放在同一个数据库(表)中#xff0c;因此会员A在查询数据时#xff0c;应只查询本人所在公司的数据#xff0c;因此会在某些表每个执行的sql语句中默认加上where tenantid ?来限制用户的…什么是TelnantIgnore有些系统设计时将不同公司(租户)的数据放在同一个数据库(表)中因此会员A在查询数据时应只查询本人所在公司的数据因此会在某些表每个执行的sql语句中默认加上where tenantid ?来限制用户的行为。但是也有一些全局的查询要查询所有公司的所有数据因此需要在该Controller的方法上加上TelnantIgnore使该方法绕过加where tenantid ?这个步骤。如何做这是一个非常经典的AOP ThreadLocal ORM 插件协同工作的架构设计案例。如果你要从零设计一个TenantIgnore功能让被注解的方法能够绕过租户限制查询全局数据你需要构建一条完整的指令传输链。我们可以把这个过程分为4 个核心步骤就像设计一套“免检通行”系统第一步制作通行证定义注解首先你需要定义一个注解作为一个“标记”。// 1. 定义注解 TenantIgnoreTarget({ElementType.METHOD,ElementType.TYPE})// 既能加在方法上也能加在类上Retention(RetentionPolicy.RUNTIME)// 运行时必须存在publicinterfaceTenantIgnore{// 可以扩展属性比如 boolean value() default true;}第二步准备口袋定义上下文 Holder你需要一个地方来存放“是否免检”这个状态。因为 Web 请求是基于线程的所以必须用ThreadLocal。// 2. 定义上下文容器 TenantContextHolderpublicclassTenantContextHolder{// 使用 ThreadLocal 保证线程隔离privatestaticfinalThreadLocalBooleanIGNOREnewThreadLocal();// 设置状态publicstaticvoidsetIgnore(Booleanignore){IGNORE.set(ignore);}// 获取状态供 MyBatis 插件读取publicstaticbooleanisIgnore(){returnBoolean.TRUE.equals(IGNORE.get());}// 清理防止内存泄漏和线程污染publicstaticvoidclear(){IGNORE.remove();}}第三步门口安检员编写 AOP 切面这是核心逻辑。你需要拦截所有贴了TenantIgnore的方法在方法执行前把“免检卡”塞进口袋执行后把卡拿出来。// 3. 定义切面 TenantIgnoreAspectAspectComponentpublicclassTenantIgnoreAspect{Around(annotation(tenantIgnore))// 拦截所有带 TenantIgnore 的方法publicObjectaround(ProceedingJoinPointjoinPoint,TenantIgnoretenantIgnore)throwsThrowable{// A. 存档先记住进门前的状态防止嵌套调用时把外层的状态搞丢booleanoldIgnoreTenantContextHolder.isIgnore();try{// B. 塞卡标记当前线程为“忽略租户”TenantContextHolder.setIgnore(true);// C. 放行执行真正的业务逻辑查询数据库returnjoinPoint.proceed();}finally{// D. 复原无论成功失败必须把状态恢复成进门前的样子// 这一步至关重要否则线程池复用会导致下一个请求数据泄露TenantContextHolder.setIgnore(oldIgnore);}}}第四步修改数据库规则配置 MyBatis Plus Handler最后你需要告诉 MyBatis Plus“生成 SQL 之前先去口袋里摸一下看看有没有免检卡。”// 4. 配置 MyBatis Plus 的多租户拦截器ComponentpublicclassMyTenantLineHandlerimplementsTenantLineHandler{OverridepublicExpressiongetTenantId(){// 返回当前用户的租户ID例如 1returnnewLongValue(UserContext.getTenantId());}OverridepublicStringgetTenantIdColumn(){returntenant_id;// 数据库里的列名}// 【核心】决定是否要忽略表不加 WHERE tenant_id ?OverridepublicbooleanignoreTable(StringtableName){// 1. 系统表如字典、菜单默认忽略if(sys_dict.equals(tableName)){returntrue;}// 2. 【关键】去口袋ThreadLocal里查状态// 如果 Aspect 设置了 true这里就返回 true - MyBatis Plus 就不会拼接租户条件了if(TenantContextHolder.isIgnore()){returntrue;}// 3. 默认不忽略returnfalse;}} 总结完整的执行流当你写下这段代码时TenantIgnore// 1. 贴上标记publicListUsergetAllUsers(){returnuserMapper.selectList(null);// 2. 查库}系统底层发生了什么AOP 介入Aspect 看到注解调用TenantContextHolder.setIgnore(true)。此时当前线程的ThreadLocal变为true。业务执行代码跑到userMapper.selectList。MP 拦截MyBatis Plus 准备生成 SQL问MyTenantLineHandler“我要不要加租户条件”Handler 检查Handler 调用TenantContextHolder.isIgnore()发现是true。SQL 生成Handler 说“不用加”。MP 生成SELECT * FROM user全表查询。AOP 收尾方法返回Aspect 在finally块中清理ThreadLocal。这就是通过注解驱动实现动态数据权限控制的标准架构设计。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

运用photoshop设计网站首页网站开发项目费用预算

终极NVIDIA显卡性能优化指南:Profile Inspector完整使用教程 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为高价显卡无法发挥全部潜能而烦恼吗?Profile Inspector这款显卡…

张小明 2025/12/27 8:03:15 网站建设

网站做的好看的怎么开个网店卖东西

你是否曾在iOS应用安全测试中遭遇SSL证书固定的阻碍?面对越来越复杂的SSL Pinning机制,传统的测试方法往往显得力不从心。SSL Kill Switch 3正是为解决这一痛点而生的终极解决方案,让安全测试工作变得前所未有的简单高效。 【免费下载链接】s…

张小明 2025/12/26 1:30:55 网站建设

专业做二手房的网站河南建设监理协会网站6

Econet集成深度优化:Home Assistant兼容性故障排查与性能调优指南 【免费下载链接】core home-assistant/core: 是开源的智能家居平台,可以通过各种组件和插件实现对家庭中的智能设备的集中管理和自动化控制。适合对物联网、智能家居以及想要实现家庭自动…

张小明 2026/1/1 13:33:58 网站建设

东莞网站制作公司怎么选择商会网站模板

R语言使用econocharts包创建微观经济或宏观经济图、supply函数创建默认的供给曲线(supply curve) 目录 R语言使用econocharts包创建微观经济或宏观经济图、supply函数创建默认的供给曲线(supply curve) #包的安装和导入 #R语言使用econocharts包创建微观经济或宏观经济图…

张小明 2026/1/5 15:12:54 网站建设

金山区做网站公司wordpress解析完403

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2026/1/6 16:39:37 网站建设

php 网站 教程广东专业网站优化公司

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 在InsCode上快速构建一个基于BF16的文本情感分析原型:1) 使用HuggingFace的预训练BERT模型;2) 启用BF16推理模式;3) 创建简单网页界面输入文本并…

张小明 2025/12/26 1:28:08 网站建设