Bläddra i källkod

update Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs.
我在本地测试的时候,新增了1个租户,Host写的localhost:8888,在前端能正确获取到这个地址,但是在后端的这个位置,获取到的host就是localhost,之前是用的Equals来判断,导致tenant一直为null,这样每次都默认返回主租户信息,同时导致租户无法登陆。正式部署的话,使用二级域名应该可以不用管这个问题。
PS:同时在前端的login中,
// 获取租户信息
const getTenantInfo = async () => {
// if (themeConfig.value.hideTenantForLogin) {
// return tenantInfo.value;
// }

const host = location.host.toLowerCase();

tenantInfo.value.list = await getAPI(SysTenantApi).apiSysTenantListGet().then(res => res.data.result ?? null);

const tenant = tenantInfo.value.list.find((item: any) => item.host && item.host === host) as any;
if (tenant?.value){
tenantInfo.value.id = parseInt(tenant?.value);
}

return tenantInfo.value;
},如果将系统里面的hideTenantForLogin放开,又会出现租户下拉选项。关闭又不会走下面代码。我注释之后,现在就能正确的根据host来切换租户了。但是如果租户过多,也会导致卡顿,因为每次登陆都会去获取一次租户的全部列表,如果部署是http的,这些数据就是明文了

Signed-off-by: vampirewal <235160615@qq.com>

vampirewal 8 månader sedan
förälder
incheckning
da7cb569ce
1 ändrade filer med 2 tillägg och 2 borttagningar
  1. 2 2
      Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

+ 2 - 2
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -125,8 +125,8 @@ public class SysTenantService : IDynamicApiController, ITransient
         var tenantId = long.Parse(App.User?.FindFirst(ClaimConst.TenantId)?.Value ?? "0");
         var host = App.HttpContext.Request.Host.Host.ToLower();
         var tenant = await _sysTenantRep.AsQueryable()
-            .WhereIF(tenantId > 0, u => u.Id == tenantId && SqlFunc.ToLower(u.Host).Equals(host))
-            .WhereIF(!(tenantId > 0), u => SqlFunc.ToLower(u.Host).Equals(host))
+            .WhereIF(tenantId > 0, u => u.Id == tenantId && SqlFunc.ToLower(u.Host).Contains(host))
+            .WhereIF(!(tenantId > 0), u => SqlFunc.ToLower(u.Host).Contains(host))
             .FirstAsync();
         tenant ??= await _sysTenantRep.GetFirstAsync(u => u.Id == SqlSugarConst.DefaultTenantId);
         _ = tenant ?? throw Oops.Oh(ErrorCodeEnum.D1002);