abp框架如何多租户只显示自己的数据

abp框架如何多租户只显示自己的数据,第1张

abp框架如何多租户只显示自己的数据, *** 作如下

1、租户登录:

基于abp实施的identityserver4授权中心,多租户登录时必须指定当前租户ID,以便将当前租户ID包含在令牌中。

将请求标头添加到登录界面:__tenant:“租户ID”

2、实现多租户

一般来说,直接启用多租户:

MultiTenancyConsts.IsEnabla = true

但是,如果您是多数据库多租户,则需要配置租户存储,否则将抛出“找不到租户存储”异常。

具体步骤:

域层

引用nuget包:Volo.Abp.TenantManagement.Domain,并依赖于AbpTenantManagementDomainModule模块

domain.shared层

引用nuget包Volo.Abp.TenantManagement.Domain.Shared取决于AbpTenantManagementDomainSharedModule模块;

实体框架层

引用nuget包:Volo.Abp.TenantManagement.EntityFrameworkCore,它依赖于AbpTenantManagementEntityFrameworkCoreModule模块;

dbcontext连接字符串必须与数据库中存储的名称相同,即,存储在AbpTenantConnectionStrings表中的名称与dbcontext记录的ConnectionStringName一致

在ABP里,一个仓储类实现IRepository<TEntity,TPrimaryKey>接口。ABP默认地为每个实体类型自动创建一个默认仓储。你可以直接注入IRepository<TEntity>(或IRepository<TEntity,TPrimaryKey>)。

首先写一个一般处理程序来获取到你要加载到前台的数据,并序列化成json格式。

//代码实例

public class AjaxUserList : IHttpHandler {

        public void ProcessRequest(HttpContext context) {

            context.Response.ContentType = "text/plain"

            BLL.UserInfoBll userInfoBll = new BLL.UserInfoBll()

            int pageIndex

            if (!int.TryParse(context.Request["pageIndex"],out pageIndex)) {

                pageIndex = 1

            }

            int pageSize = 5

            int pageCount = userInfoBll.GetPageCount(pageSize)

            //判断当前页码的取值范围

            pageIndex = pageIndex < 1 ? 1 : pageIndex

            pageIndex = pageIndex > pageCount ? pageCount : pageIndex

            //获取分页数据

            List<Model.UserInfo> userList = userInfoBll.GetPageList(pageIndex, pageSize)

            //获取页码条

            string pageBar = Util.PageBar.GetPageBar(pageIndex, pageCount)

            //***********************************************************

            //使用匿名类将多组数据序列化成Json格式

            //***********************************************************

            JavaScriptSerializer js = new JavaScriptSerializer()

            string json = js.Serialize(new { resultUserList = userList, resultPageBar = pageBar })//此处使用了匿名类将userList集合和pageBar进行封装后,再序列化

            //***********************************************************

            context.Response.Write(json)

        }

        public bool IsReusable {

            get {

                return false

            }

        }

    }

然后,前台ajax请求这个一般处理处理程序获取到json数据,再通过js将数据添加到html。

//加载用户列表示例

        function LoadUserInfo(pageIndex) {

            $.post("AjaxUserList.ashx", { "pageIndex": pageIndex }, function (data) {

                var serverData = $.parseJSON(data)

                for (var i = 0 i < serverData.resultUserList.length i++) {

                    $("<tr><td>" + serverData.resultUserList[i].ID + "</td><td>" + serverData.resultUserList[i].UName + "</td><td>" + serverData.resultUserList[i].UPwd + "</td><td>" + ChangeDateFormat(serverData.resultUserList[i].SubTime) + "</td><td>" + serverData.resultUserList[i].Remark + "</td><td><a href='javascript:void(0)' class='details' Uid='" + serverData.resultUserList[i].ID + "'>详细</a></td><td><a href='javascript:void(0)' class='edits' Uid='" + serverData.resultUserList[i].ID + "'>编辑</a>  <a href='javascript:void(0)' class='deletes' Uid='" + serverData.resultUserList[i].ID + "' UName='" + serverData.resultUserList[i].UName + "'>删除</a></td></tr>").appendTo("#tabUserList")

                }

            })

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9508335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存