Bläddra i källkod

😁多线程模式下获取租户库连接增加lock

zuohuaijun 2 år sedan
förälder
incheckning
e90c51acd9

+ 2 - 2
Admin.NET/Admin.NET.Core/Service/Auth/SysAuthService.cs

@@ -86,12 +86,12 @@ public class SysAuthService : IDynamicApiController, ITransient
         // 密码是否正确
         if (CryptogramUtil.CryptoType == CryptogramEnum.MD5.ToString())
         {
-            if (user.Password != MD5Encryption.Encrypt(input.Password))
+            if (user.Password.Equals(MD5Encryption.Encrypt(input.Password)))
                 throw Oops.Oh(ErrorCodeEnum.D1000);
         }
         else
         {
-            if (CryptogramUtil.Decrypt(user.Password) != input.Password)
+            if (CryptogramUtil.Decrypt(user.Password).Equals(input.Password))
                 throw Oops.Oh(ErrorCodeEnum.D1000);
         }
 

+ 29 - 26
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -415,35 +415,38 @@ public class SysTenantService : IDynamicApiController, ITransient
         if (iTenant.IsAnyConnection(tenantId.ToString()))
             return iTenant.GetConnectionScope(tenantId.ToString());
 
-        // 从缓存里面获取租户信息
-        var tenant = _sysCacheService.Get<List<SysTenant>>(CacheConst.KeyTenant).FirstOrDefault(u => u.Id == tenantId);
-        if (tenant == null) return null;
+        lock (iTenant)
+        {
+            // 从缓存里面获取租户信息
+            var tenant = _sysCacheService.Get<List<SysTenant>>(CacheConst.KeyTenant)?.First(u => u.Id == tenantId);
+            if (tenant == null) return null;
 
-        // 对租户库连接进行SM2解密
-        tenant.Connection = CryptogramUtil.SM2Decrypt(tenant.Connection);
+            // 对租户库连接进行SM2解密
+            tenant.Connection = CryptogramUtil.SM2Decrypt(tenant.Connection);
 
-        // 获取默认库连接配置
-        var dbOptions = App.GetOptions<DbConnectionOptions>();
-        var mainConnConfig = dbOptions.ConnectionConfigs.First(u => u.ConfigId.ToString() == SqlSugarConst.MainConfigId);
+            // 获取默认库连接配置
+            var dbOptions = App.GetOptions<DbConnectionOptions>();
+            var mainConnConfig = dbOptions.ConnectionConfigs.First(u => u.ConfigId.ToString() == SqlSugarConst.MainConfigId);
 
-        // 设置租户库连接配置
-        var tenantConnConfig = new DbConnectionConfig
-        {
-            ConfigId = tenant.Id.ToString(),
-            DbType = tenant.DbType,
-            IsAutoCloseConnection = true,
-            ConnectionString = tenant.Connection,
-            DbSettings = new DbSettings()
+            // 设置租户库连接配置
+            var tenantConnConfig = new DbConnectionConfig
             {
-                EnableUnderLine = mainConnConfig.DbSettings.EnableUnderLine,
-            }
-        };
-        iTenant.AddConnection(tenantConnConfig);
-
-        var sqlSugarScopeProvider = iTenant.GetConnectionScope(tenantId.ToString());
-        SqlSugarSetup.SetDbConfig(tenantConnConfig);
-        SqlSugarSetup.SetDbAop(sqlSugarScopeProvider, dbOptions.EnableConsoleSql);
-
-        return sqlSugarScopeProvider;
+                ConfigId = tenant.Id.ToString(),
+                DbType = tenant.DbType,
+                IsAutoCloseConnection = true,
+                ConnectionString = tenant.Connection,
+                DbSettings = new DbSettings()
+                {
+                    EnableUnderLine = mainConnConfig.DbSettings.EnableUnderLine,
+                }
+            };
+            iTenant.AddConnection(tenantConnConfig);
+
+            var sqlSugarScopeProvider = iTenant.GetConnectionScope(tenantId.ToString());
+            SqlSugarSetup.SetDbConfig(tenantConnConfig);
+            SqlSugarSetup.SetDbAop(sqlSugarScopeProvider, dbOptions.EnableConsoleSql);
+
+            return sqlSugarScopeProvider;
+        }
     }
 }