首页 > 其他分享 >blog.admin 查询增加过滤器,添加、删除增加数据审计、统一控制权限操作

blog.admin 查询增加过滤器,添加、删除增加数据审计、统一控制权限操作

时间:2024-04-25 11:55:49浏览次数:27  
标签:添加 admin App blog ClinicID User 过滤器 诊所 IClinicEntity

一、查询增加过滤器

需求说明:有几张表(医生表、病人表等),有个字段ClinicID都与诊所表主键Id关联。用户登录系统时候,根据所分配的诊所权限,只查看自己诊所的数据。通过查询过滤器,在查询每个表的时候,自动将ClinicID==当前登录用户所属ClinicID,添加上。

1、创一个IClinicEntity接口

using SqlSugar;

namespace Blog.Core.Model.Tenants
{
    public interface IClinicEntity
    {
        /// <summary>
        /// 诊所Id
        /// </summary>
        [SugarColumn(DefaultValue = "0")]
        public long ClinicID { get; set; }
    }
}

2、所有有诊所ID外键的表,都需要继承这个接口IClinicEntity

public class Doctor : ClinicRoot<long>, IClinicEntity

3、在项目的Blog.Core.Common.DB.RepositorySetting类里面添加以下方法

public static void SetClinicEntityFilter(SqlSugarScopeProvider db)
{
    if (App.User is not { ID: > 0, ClinicID: > 0 })
    {
        return;
    }

    db.QueryFilter.AddTableFilter<IClinicEntity>(it => it.ClinicID == App.User.ClinicID || it.ClinicID ==0);
}

4、在项目的Blog.Core.Extensions.SqlsugarSetup类里面增加以下代码

之后对继承IClinicEntity的所有表查询,都会加上ClinicID == App.User.ClinicID  这个条件。

 

 二、添加、修改增加数据审计

需求说明:每次添加、修改表数据的时候ClinicID自动赋值当时登录用户的ClinicID

1、Blog.Core.Common.DB.Aop.SqlSugarAop类里面增加以下代码

if(App.User?.ID > 0 && App.User?.ClinicID > 0)   //诊所
{
    if (baseEntity is IClinicEntity clinicEntity)
    {
        clinicEntity.ClinicID = App.User.ClinicID;
    }
}

 之后每次对继承接口IClinicEntity表的所有添加、修改操作,都会自动赋值ClinicID

 

 

 

 

 

参考:https://www.donet5.com/doc/1/1205

标签:添加,admin,App,blog,ClinicID,User,过滤器,诊所,IClinicEntity
From: https://www.cnblogs.com/handsomeziff/p/18157300

相关文章

  • Markdown To blog 图片文件上传
    具体可见【博客园皮肤美化&写博客】https://www.bilibili.com/video/BV1Rv4y1Y7KH/?share_source=copy_web&vd_source=aa794a877150d12d2f1ff15d63616ad3安装配置打开运行窗口输入control找到程序和功能->启用或关闭windows功能安装NET3.5安装dotnet-sdk-5.0.408-......
  • Markdowmtoblog 文件图片上传
    pycnblog博客园上传markdown文件https://www.cnblogs.com/df888/p/11826480.html注意博客园6.21更新,MetaWeblog现在不支持密码登录,需要通过访问令牌(accesstoken)登录,在博客后台设置页面,允许MetaWeblog博客客户端访问,下方有MetaWeblog访问令牌,点击查看,创建访问令牌。功能一......
  • Python字符串过滤器:正则表达式Regular Expression
    一、什么是正则表达式正则表达式是按照正确的既定规则、一种全语言类型Python、Java、JavaScript、PHP通用的表达式。用途:(1)根据规则抓取数据:配合爬虫、根据规则在文本中提取数据(2)根据规则验证数据:验证手机号、验证邮箱、验证身份证二、如何在Python中使用正则表达式在Python......
  • 文件上传-cnblog
    文件上传概念文件上传漏洞是指用户上传了一个可执行的脚本文件(php、jsp、xml、cer等文件),而WEB系统没有进行检测或逻辑做的不够安全文件上传必须以POST提交表单。表单中需要<inputtype="file"name="upload">攻击者通过上传恶意文件传递给解释器执行,然后就可以在服务器上......
  • 信息收集-cnblog
    信息收集domain:"kuaishou.com"ANDport:"80"360网络空间检索语句(domain="qianxin.com")&&ip.port="80"鹰图曾记得某位大佬说过“渗透测试的本质就是信息收集”,那么信息收集,我们到底该收集啥?信息收集是指通过各种方式获取所需要的信息,以便我们在后续的......
  • JDBC数据库-cnblog
    “感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友。您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!......
  • PTA题目集1~3的总结性Blog
    第一次:难度:类内方法不复杂,只有3种信息输入,且有类设计的提示。相对简单。题量:需要1~2天知识点:类设计,字符串处理等基础语法,正则表达式。————————————————————————设计与分析——————————————————————————————————类设......
  • 第一次blog
    一.前言1.前三次题目集的知识点:(1)利用面对对象编程原理根据题目给的信息以及题目的复杂程度建立对应的类以及在类里加入方法。(2)使用Java自带的类库运用Scanner类中的方法、regex.Matcher类中的方法、regex.Pattern类中的方法等。(3)正则表达式的利用,利用正则表达式对题目给出的输......
  • 第一次blog
    前言:我在大一上学期学习了c语言,然后在下学期学习了第二门语言java,因为之前c语言学的挺一般的,然后在这学期学习java感觉还是挺不简单的,要自学很多东西,在这段时间里,我学习了JAVA的基本语法。逻辑结构的使用,学习了类的使用,和类的基本概念,学会了如何封装程序,使得代码更加严谨,代码也更......
  • Blog1-3
    Blog1-3总结1.前言三个礼拜左右的pta训练,让我成功认知到了学校对java这门课程的重视。总体而言,这三次pta难度都是比较大的,让我的头发掉了一根又一根,而且题目难度跨度太大了,让人有点难以适应,也是因为难度跨度很大,导致分数的分配也不是很均匀。还有就是有些测试点真的有点奇怪,让......