diff --git a/Infrastructure/App/App.cs b/Infrastructure/App/App.cs
index 1bde3c6..eb083f2 100644
--- a/Infrastructure/App/App.cs
+++ b/Infrastructure/App/App.cs
@@ -1,4 +1,5 @@
-using Microsoft.AspNetCore.Hosting;
+using Infrastructure.Model;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
diff --git a/Infrastructure/Infrastructure.csproj b/Infrastructure/Infrastructure.csproj
index ba84635..57a874c 100644
--- a/Infrastructure/Infrastructure.csproj
+++ b/Infrastructure/Infrastructure.csproj
@@ -2,6 +2,9 @@
net7.0
+
+ 8632
+
@@ -16,6 +19,7 @@
+
diff --git a/ZR.Admin.WebApi/Framework/JwtUtil.cs b/Infrastructure/JwtUtil.cs
similarity index 88%
rename from ZR.Admin.WebApi/Framework/JwtUtil.cs
rename to Infrastructure/JwtUtil.cs
index 88423b8..f8787f7 100644
--- a/ZR.Admin.WebApi/Framework/JwtUtil.cs
+++ b/Infrastructure/JwtUtil.cs
@@ -1,14 +1,20 @@
-using Microsoft.IdentityModel.Tokens;
+using Infrastructure.Extensions;
+using Infrastructure.Model;
+using Infrastructure.WebExtensins;
+using Microsoft.AspNetCore.Http;
+using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
using System.Security.Claims;
using System.Text;
-using ZR.Model.System.Dto;
-namespace ZR.Admin.WebApi.Framework
+namespace Infrastructure
{
///
- /// 2020-11-20
+ /// 2023-8-29已从WebApi移至此
///
public class JwtUtil
{
@@ -17,7 +23,7 @@ namespace ZR.Admin.WebApi.Framework
///
///
///
- public static LoginUser GetLoginUser(HttpContext httpContext)
+ public static TokenModel GetLoginUser(HttpContext httpContext)
{
string token = httpContext.GetToken();
@@ -53,7 +59,7 @@ namespace ZR.Admin.WebApi.Framework
IssuedAt = authTime,//token生成时间
Expires = expiresAt,
//NotBefore = authTime,
- TokenType = "Bearer",
+ TokenType = jwtSettings.TokenType,
//对称秘钥,签名证书
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
@@ -118,18 +124,18 @@ namespace ZR.Admin.WebApi.Framework
///
///
///
- public static LoginUser? ValidateJwtToken(JwtSecurityToken jwtSecurityToken)
+ public static TokenModel? ValidateJwtToken(JwtSecurityToken jwtSecurityToken)
{
try
{
if (jwtSecurityToken == null) return null;
IEnumerable claims = jwtSecurityToken?.Claims;
- LoginUser loginUser = null;
+ TokenModel loginUser = null;
var userData = claims.FirstOrDefault(x => x.Type == ClaimTypes.UserData)?.Value;
if (userData != null)
{
- loginUser = JsonConvert.DeserializeObject(userData);
+ loginUser = JsonConvert.DeserializeObject(userData);
loginUser.ExpireTime = jwtSecurityToken.ValidTo;
}
return loginUser;
@@ -146,7 +152,7 @@ namespace ZR.Admin.WebApi.Framework
///
///
///
- public static List AddClaims(LoginUser user)
+ public static List AddClaims(TokenModel user)
{
var claims = new List()
{
diff --git a/Infrastructure/OptionsSetting.cs b/Infrastructure/Model/OptionsSetting.cs
similarity index 92%
rename from Infrastructure/OptionsSetting.cs
rename to Infrastructure/Model/OptionsSetting.cs
index 7befae4..50097a6 100644
--- a/Infrastructure/OptionsSetting.cs
+++ b/Infrastructure/Model/OptionsSetting.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace Infrastructure
+namespace Infrastructure.Model
{
///
/// 获取配置文件POCO实体类
@@ -80,6 +80,14 @@ namespace Infrastructure
/// token时间(分)
///
public int Expire { get; set; } = 1440;
+ ///
+ /// 刷新token时长
+ ///
+ public int RefreshTokenTime { get; set; }
+ ///
+ /// token类型
+ ///
+ public string TokenType { get; set; } = "Bearer";
}
public class Gen
diff --git a/ZR.Model/System/Dto/LoginUser.cs b/Infrastructure/Model/TokenModel.cs
similarity index 74%
rename from ZR.Model/System/Dto/LoginUser.cs
rename to Infrastructure/Model/TokenModel.cs
index 3923582..bdfd86a 100644
--- a/ZR.Model/System/Dto/LoginUser.cs
+++ b/Infrastructure/Model/TokenModel.cs
@@ -1,11 +1,10 @@
-using System.Linq;
+using System;
+using System.Collections.Generic;
+using System.Linq;
-namespace ZR.Model.System.Dto
+namespace Infrastructure.Model
{
- ///
- /// 登录用户信息存储
- ///
- public class LoginUser
+ public class TokenModel
{
public long UserId { get; set; }
public long DeptId { get; set; }
@@ -26,15 +25,15 @@ namespace ZR.Model.System.Dto
/// 权限集合
///
//public List Permissions { get; set; } = new List();
- public LoginUser()
+ public TokenModel()
{
}
- public LoginUser(SysUser user, List roles)
+ public TokenModel(TokenModel info, List roles)
{
- UserId = user.UserId;
- UserName = user.UserName;
- DeptId = user.DeptId;
+ UserId = info.UserId;
+ UserName = info.UserName;
+ DeptId = info.DeptId;
Roles = roles;
RoleIds = roles.Select(f => f.RoleKey).ToList();
}
diff --git a/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs b/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs
index 3a17ebf..2080ef9 100644
--- a/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs
@@ -1,10 +1,7 @@
-using IPTools.Core;
-using Lazy.Captcha.Core;
+using Lazy.Captcha.Core;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
-using UAParser;
using ZR.Admin.WebApi.Filters;
-using ZR.Admin.WebApi.Framework;
using ZR.Model.System;
using ZR.Model.System.Dto;
using ZR.Service.System;
@@ -86,7 +83,7 @@ namespace ZR.Admin.WebApi.Controllers.System
//权限集合 eg *:*:*,system:user:list
List permissions = permissionService.GetMenuPermission(user);
- LoginUser loginUser = new(user, roles.Adapt>());
+ TokenModel loginUser = new(user.Adapt(), roles.Adapt>());
CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.UserId, permissions);
return SUCCESS(JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser)));
}
diff --git a/ZR.Admin.WebApi/Controllers/System/monitor/SysUserOnlineController.cs b/ZR.Admin.WebApi/Controllers/System/monitor/SysUserOnlineController.cs
index 71e3d87..81b1857 100644
--- a/ZR.Admin.WebApi/Controllers/System/monitor/SysUserOnlineController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/monitor/SysUserOnlineController.cs
@@ -1,5 +1,4 @@
-using Infrastructure.Constant;
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using ZR.Admin.WebApi.Filters;
using ZR.Admin.WebApi.Hubs;
diff --git a/ZR.Admin.WebApi/Extensions/DataPermi.cs b/ZR.Admin.WebApi/Extensions/DataPermi.cs
index a313987..7d22f01 100644
--- a/ZR.Admin.WebApi/Extensions/DataPermi.cs
+++ b/ZR.Admin.WebApi/Extensions/DataPermi.cs
@@ -1,7 +1,5 @@
-using Infrastructure;
+using SqlSugar;
using SqlSugar.IOC;
-using SqlSugar;
-using ZR.Admin.WebApi.Framework;
using ZR.Model.System;
namespace ZR.Admin.WebApi.Extensions
diff --git a/ZR.Admin.WebApi/Extensions/DbExtension.cs b/ZR.Admin.WebApi/Extensions/DbExtension.cs
index efdefac..8cba189 100644
--- a/ZR.Admin.WebApi/Extensions/DbExtension.cs
+++ b/ZR.Admin.WebApi/Extensions/DbExtension.cs
@@ -1,4 +1,3 @@
-using Infrastructure;
using Infrastructure.Extensions;
using SqlSugar;
using SqlSugar.IOC;
diff --git a/ZR.Admin.WebApi/Extensions/LogoExtension.cs b/ZR.Admin.WebApi/Extensions/LogoExtension.cs
index 71f86e1..f08181f 100644
--- a/ZR.Admin.WebApi/Extensions/LogoExtension.cs
+++ b/ZR.Admin.WebApi/Extensions/LogoExtension.cs
@@ -14,7 +14,7 @@ namespace Infrastructure
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("🎉源码地址: https://gitee.com/izory/ZrAdminNetCore");
Console.WriteLine("📖官方文档:http://www.izhaorui.cn/doc");
- Console.WriteLine("🤑打赏作者:http://www.izhaorui.cn/doc/support.html");
+ Console.WriteLine("💰打赏作者:http://www.izhaorui.cn/doc/support.html");
Console.WriteLine("📱移动端体验:http://www.izhaorui.cn/h5");
}
}
diff --git a/ZR.Admin.WebApi/Filters/ActionPermissionFilter.cs b/ZR.Admin.WebApi/Filters/ActionPermissionFilter.cs
index 7e085d8..831e0d6 100644
--- a/ZR.Admin.WebApi/Filters/ActionPermissionFilter.cs
+++ b/ZR.Admin.WebApi/Filters/ActionPermissionFilter.cs
@@ -1,10 +1,6 @@
-using Infrastructure.Extensions;
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
-using System.Data;
-using ZR.Admin.WebApi.Framework;
using ZR.Model.System;
-using ZR.Model.System.Dto;
using ZR.Service.System;
using ZR.Service.System.IService;
@@ -41,7 +37,7 @@ namespace ZR.Admin.WebApi.Filters
///
public override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
- LoginUser info = JwtUtil.GetLoginUser(context.HttpContext);
+ TokenModel info = JwtUtil.GetLoginUser(context.HttpContext);
if (info != null && info?.UserId > 0)
{
@@ -79,7 +75,7 @@ namespace ZR.Admin.WebApi.Filters
string[] denyPerms = new string[] { "update", "add", "remove", "add", "edit", "delete", "import", "run", "start", "stop", "clear", "send", "export", "upload", "common", "gencode", "reset" };
if (isDemoMode && denyPerms.Any(f => Permission.ToLower().Contains(f)))
{
- context.Result = new JsonResult(new { code = ResultCode.FORBIDDEN, msg = "演示模式 , 不允许操作" });
+ context.Result = new JsonResult(new { code = (int)ResultCode.FORBIDDEN, msg = "演示模式 , 不允许操作" });
}
if (!HasPermi && !Permission.Equals("common"))
{
diff --git a/ZR.Admin.WebApi/Filters/VerifyAttribute.cs b/ZR.Admin.WebApi/Filters/VerifyAttribute.cs
index 7ea4078..aa6b480 100644
--- a/ZR.Admin.WebApi/Filters/VerifyAttribute.cs
+++ b/ZR.Admin.WebApi/Filters/VerifyAttribute.cs
@@ -2,8 +2,6 @@
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
using NLog;
-using ZR.Admin.WebApi.Framework;
-using ZR.Model.System.Dto;
namespace ZR.Admin.WebApi.Filters
{
@@ -36,7 +34,7 @@ namespace ZR.Admin.WebApi.Filters
var isAuthed = context.HttpContext.User.Identity.IsAuthenticated;
//使用jwt token校验2020-11-21
- LoginUser loginUser = JwtUtil.GetLoginUser(context.HttpContext);
+ TokenModel loginUser = JwtUtil.GetLoginUser(context.HttpContext);
if (loginUser != null)
{
var nowTime = DateTime.UtcNow;
@@ -56,7 +54,7 @@ namespace ZR.Admin.WebApi.Filters
if (loginUser == null || !isAuthed)
{
string msg = $"请求访问[{url}]失败,无法访问系统资源";
- logger.Info($"{msg}");
+ //logger.Info(msg);
context.Result = new JsonResult(new ApiResult((int)ResultCode.DENY, msg));
}
diff --git a/Infrastructure/Constant/HubsConstant.cs b/ZR.Admin.WebApi/Hubs/HubsConstant.cs
similarity index 91%
rename from Infrastructure/Constant/HubsConstant.cs
rename to ZR.Admin.WebApi/Hubs/HubsConstant.cs
index 929872c..8142dc3 100644
--- a/Infrastructure/Constant/HubsConstant.cs
+++ b/ZR.Admin.WebApi/Hubs/HubsConstant.cs
@@ -1,4 +1,4 @@
-namespace Infrastructure.Constant
+namespace ZR.Admin.WebApi.Hubs
{
public class HubsConstant
{
diff --git a/ZR.Admin.WebApi/Hubs/MessageHub.cs b/ZR.Admin.WebApi/Hubs/MessageHub.cs
index a0ba360..4e64b69 100644
--- a/ZR.Admin.WebApi/Hubs/MessageHub.cs
+++ b/ZR.Admin.WebApi/Hubs/MessageHub.cs
@@ -1,5 +1,4 @@
-using Infrastructure.Constant;
-using IPTools.Core;
+using IPTools.Core;
using Microsoft.AspNetCore.SignalR;
using System.Web;
using UAParser;
@@ -81,7 +80,7 @@ namespace ZR.Admin.WebApi.Hubs
userInfo.TodayOnlineTime = 0;
}
var clientUser = onlineClients.Find(x => x.Userid == userid);
- userInfo.TodayOnlineTime += clientUser?.OnlineTime ?? 0;
+ userInfo.TodayOnlineTime += Math.Round(clientUser?.OnlineTime ?? 0, 2);
}
//给当前所有登录当前账号的用户下发登录时长
var connIds = onlineClients.Where(f => f.Userid == userid).ToList();
@@ -123,7 +122,7 @@ namespace ZR.Admin.WebApi.Hubs
{
userInfo.TodayOnlineTime += user?.OnlineTime ?? 0;
}
- Log.WriteLine(ConsoleColor.Green, msg: $"用户{user?.Name}离开了,已在线{userInfo?.TodayOnlineTime}分,当前已连接{onlineClients.Count}个");
+ Log.WriteLine(ConsoleColor.Red, msg: $"用户{user?.Name}离开了,已在线{userInfo?.TodayOnlineTime}分,当前已连接{onlineClients.Count}个");
}
return base.OnDisconnectedAsync(exception);
}
diff --git a/ZR.Admin.WebApi/Program.cs b/ZR.Admin.WebApi/Program.cs
index f6d29bb..662ce75 100644
--- a/ZR.Admin.WebApi/Program.cs
+++ b/ZR.Admin.WebApi/Program.cs
@@ -1,16 +1,13 @@
using AspNetCoreRateLimit;
-using Infrastructure;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.IdentityModel.Tokens;
using System.Text.Json.Serialization;
using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
-using ZR.Admin.WebApi.Framework;
using ZR.Admin.WebApi.Hubs;
using ZR.Admin.WebApi.Middleware;
using ZR.Common.Cache;
-using ZR.Model.System.Dto;
var builder = WebApplication.CreateBuilder(args);
diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
index 870be2a..32e0cbe 100644
--- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
+++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
@@ -17,7 +17,6 @@
-
diff --git a/ZR.Admin.WebApi/appsettings.json b/ZR.Admin.WebApi/appsettings.json
index 17baa36..de5b1cb 100644
--- a/ZR.Admin.WebApi/appsettings.json
+++ b/ZR.Admin.WebApi/appsettings.json
@@ -30,7 +30,8 @@
"Audience": "ZRAdmin.NET", //指该token是服务于哪个群体的(群体范围)
"SecretKey": "SecretKey-ZRADMIN.NET-20210101",
"Expire": 1440, //jwt登录过期时间(分)
- "refreshTokenTime": 5
+ "RefreshTokenTime": 5,//分钟
+ "TokenType": "Bearer"
},
"InjectClass": [ "ZR.Repository", "ZR.Service", "ZR.Tasks" ], //自动注入类
"ShowDbLog": true, //是否打印db日志
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index 2466e02..23378eb 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -1,5 +1,6 @@
using Infrastructure;
using Infrastructure.Extensions;
+using Infrastructure.Model;
using JinianNet.JNTemplate;
using SqlSugar;
using System;
diff --git a/ZR.CodeGenerator/DbProvider.cs b/ZR.CodeGenerator/DbProvider.cs
index da58700..e4a0191 100644
--- a/ZR.CodeGenerator/DbProvider.cs
+++ b/ZR.CodeGenerator/DbProvider.cs
@@ -1,4 +1,5 @@
using Infrastructure;
+using Infrastructure.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
diff --git a/ZR.CodeGenerator/Service/CodeGeneraterService.cs b/ZR.CodeGenerator/Service/CodeGeneraterService.cs
index 85024e6..101a18e 100644
--- a/ZR.CodeGenerator/Service/CodeGeneraterService.cs
+++ b/ZR.CodeGenerator/Service/CodeGeneraterService.cs
@@ -1,4 +1,5 @@
using Infrastructure;
+using Infrastructure.Model;
using SqlSugar;
using System.Collections.Generic;
using System.Linq;
diff --git a/ZR.Common/MailHelper.cs b/ZR.Common/MailHelper.cs
index 79b8b3d..22f01c2 100644
--- a/ZR.Common/MailHelper.cs
+++ b/ZR.Common/MailHelper.cs
@@ -1,4 +1,5 @@
using Infrastructure;
+using Infrastructure.Model;
using MailKit.Net.Smtp;
using MimeKit;
using MimeKit.Text;
diff --git a/ZR.Service/System/SysFileService.cs b/ZR.Service/System/SysFileService.cs
index 6573363..55d458a 100644
--- a/ZR.Service/System/SysFileService.cs
+++ b/ZR.Service/System/SysFileService.cs
@@ -1,6 +1,7 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Extensions;
+using Infrastructure.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
using System;