Просмотр исходного кода

😁鉴权、菜单代码相关代码调整及升级Furion v4.8.8.55

zuohuaijun 2 лет назад
Родитель
Сommit
17bda1e225

+ 3 - 3
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -22,9 +22,9 @@
     <PackageReference Include="AspNet.Security.OAuth.Weixin" Version="6.0.15" />
     <PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
     <PackageReference Include="FluentEmail.Smtp" Version="3.0.2" />
-    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.8.8.54" />
-    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.8.8.54" />
-    <PackageReference Include="Furion.Pure" Version="4.8.8.54" />
+    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.8.8.55" />
+    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.8.8.55" />
+    <PackageReference Include="Furion.Pure" Version="4.8.8.55" />
     <PackageReference Include="IPTools.China" Version="1.6.0" />
     <PackageReference Include="Lazy.Captcha.Core" Version="2.0.6" />
     <PackageReference Include="Magicodes.IE.Excel" Version="2.7.4.5" />

+ 1 - 1
Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs

@@ -329,7 +329,7 @@ public enum ErrorCodeEnum
     D4008,
 
     /// <summary>
-    /// 禁止本节点与父节点相同
+    /// 路由名称重复
     /// </summary>
     [ErrorCodeItemMetadata("路由名称重复")]
     D4009,

+ 3 - 5
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -113,14 +113,12 @@ public class SysMenuService : IDynamicApiController, ITransient
         var isExist = input.Type != MenuTypeEnum.Btn
             ? await _sysMenuRep.IsAnyAsync(u => u.Title == input.Title)
             : await _sysMenuRep.IsAnyAsync(u => u.Permission == input.Permission);
-
         if (isExist)
             throw Oops.Oh(ErrorCodeEnum.D4000);
-        
-        if(input.Name!=null)
+
+        if (!string.IsNullOrWhiteSpace(input.Name))
         {
-            var isRouteNameExist = await _sysMenuRep.IsAnyAsync(u => u.Name == input.Name);
-            if (isRouteNameExist)
+            if (await _sysMenuRep.IsAnyAsync(u => u.Name == input.Name))
                 throw Oops.Oh(ErrorCodeEnum.D4009);
         }
 

+ 11 - 2
Admin.NET/Admin.NET.Web.Core/Handlers/JwtHandler.cs

@@ -15,12 +15,20 @@ using Furion.DataEncryption;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.DependencyInjection;
+using System;
 using System.Threading.Tasks;
 
 namespace Admin.NET.Web.Core
 {
     public class JwtHandler : AppAuthorizeHandler
     {
+        private readonly IServiceProvider _serviceProvider;
+
+        public JwtHandler(IServiceProvider serviceProvider)
+        {
+            _serviceProvider = serviceProvider;
+        }
+
         /// <summary>
         /// 自动刷新Token
         /// </summary>
@@ -29,8 +37,9 @@ namespace Admin.NET.Web.Core
         public override async Task HandleAsync(AuthorizationHandlerContext context)
         {
             // 获取Token过期时间
-            var serviceProvider = context.GetCurrentHttpContext().RequestServices;
-            var sysConfigService = serviceProvider.GetService<SysConfigService>();
+            // var serviceProvider = context.GetCurrentHttpContext().RequestServices;
+            using var serviceScope = _serviceProvider.CreateScope();
+            var sysConfigService = serviceScope.ServiceProvider.GetService<SysConfigService>();
             var tokenExpire = await sysConfigService.GetTokenExpire();
             var refreshTokenExpire = await sysConfigService.GetRefreshTokenExpire();
 

+ 1 - 1
Web/src/stores/userInfo.ts

@@ -88,7 +88,7 @@ export const useUserInfo = defineStore('userInfo', {
 						const configData = configRes.data.result;
 						const storesThemeConfig = useThemeConfig();
 						storesThemeConfig.themeConfig.isWatermark = configData.watermarkEnabled;
-                        storesThemeConfig.themeConfig.watermarkText = userInfos.realName;
+						storesThemeConfig.themeConfig.watermarkText = userInfos.realName;
 						if (storesThemeConfig.themeConfig.isWatermark) Watermark.set(storesThemeConfig.themeConfig.watermarkText);
 						else Watermark.del();