diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceInspectController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceInspectController.cs index 1678ea9..e647f76 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceInspectController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceInspectController.cs @@ -34,7 +34,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpGet("list")] - [ActionPermissionFilter(Permission = "deviceManagement:deviceinspect:list")] + public IActionResult QueryDeviceInspect([FromQuery] DeviceInspectQueryDto parm) { var response = _DeviceInspectService.GetList(parm); diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceMaintenanceRecordController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceMaintenanceRecordController.cs index f155322..6819c71 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceMaintenanceRecordController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceMaintenanceRecordController.cs @@ -31,7 +31,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpGet("list")] - [ActionPermissionFilter(Permission = "business:devicemaintenancerecord:list")] + // [ActionPermissionFilter(Permission = "business:devicemaintenancerecord:list")] public IActionResult QueryDeviceMaintenanceRecord([FromQuery] DeviceMaintenanceRecordQueryDto parm) { var response = _DeviceMaintenanceRecordService.GetList(parm); diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePointInspectionPlanController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePointInspectionPlanController.cs index a9c7c45..b420410 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePointInspectionPlanController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePointInspectionPlanController.cs @@ -31,7 +31,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpGet("list")] - [ActionPermissionFilter(Permission = "deviceManagement:devicepointinspectionplan:list")] + public IActionResult QueryDevicePointInspectionPlan([FromQuery] DevicePointInspectionPlanQueryDto parm) { var response = _DevicePointInspectionPlanService.GetList(parm); diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRepairController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRepairController.cs index 203410b..8176ed3 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRepairController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRepairController.cs @@ -31,7 +31,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpPost("list")] - [ActionPermissionFilter(Permission = "business:devicerepair:list")] + public IActionResult QueryDeviceRepair([FromBody] DeviceRepairQueryDto parm) { var response = _DeviceRepairService.GetList(parm); diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRouteInspectionPlanController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRouteInspectionPlanController.cs index 3a84452..6a6fece 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRouteInspectionPlanController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceRouteInspectionPlanController.cs @@ -31,7 +31,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpGet("list")] - [ActionPermissionFilter(Permission = "deviceManagement:devicerouteinspectionplan:list")] + public IActionResult QueryDeviceRouteInspectionPlan([FromQuery] DeviceRouteInspectionPlanQueryDto parm) { var response = _DeviceRouteInspectionPlanService.GetList(parm); diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteController.cs index 3bb7c6b..1297654 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteController.cs @@ -35,7 +35,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpPost("list")] - [ActionPermissionFilter(Permission = "deviceManagement:devicetaskexecute:list")] + public IActionResult QueryDeviceTaskExecute([FromBody] DeviceTaskExecuteQueryDto parm) { var response = _DeviceTaskExecuteService.GetList(parm); @@ -83,6 +83,8 @@ namespace DOAN.Admin.WebApi.Controllers [Log(Title = "任务执行", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateDeviceTaskExecute([FromBody] DeviceTaskExecuteDto parm) { + + Console.WriteLine(HttpContext.User?.Identity?.Name); var modal = parm.Adapt().ToUpdate(HttpContext); var response = _DeviceTaskExecuteService.UpdateDeviceTaskExecute(modal); @@ -308,7 +310,7 @@ namespace DOAN.Admin.WebApi.Controllers { return SUCCESS(null); } - result.ToUpdate(HttpContext); + result.ToUpdate_nickName(HttpContext); int res=_DeviceTaskExecuteService.UpdateFormResult(result); return SUCCESS(res); } diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteResultController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteResultController.cs index 8437b29..7144c5e 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteResultController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DeviceTaskExecuteResultController.cs @@ -33,7 +33,7 @@ namespace DOAN.Admin.WebApi.Controllers /// /// [HttpGet("list")] - [ActionPermissionFilter(Permission = "deviceManagement:devicetaskexecuteresult1:list")] + public IActionResult QueryDeviceTaskExecuteResult1([FromQuery] DeviceTaskExecuteResultQueryDto parm) { var response = _DeviceTaskExecuteResultService.GetList(parm); diff --git a/DOAN.Admin.WebApi/Controllers/System/SysLoginController.cs b/DOAN.Admin.WebApi/Controllers/System/SysLoginController.cs index c26d95c..a823acd 100644 --- a/DOAN.Admin.WebApi/Controllers/System/SysLoginController.cs +++ b/DOAN.Admin.WebApi/Controllers/System/SysLoginController.cs @@ -76,7 +76,9 @@ namespace DOAN.Admin.WebApi.Controllers.System List permissions = permissionService.GetMenuPermission(user); TokenModel loginUser = new(user.Adapt(), roles.Adapt>()); + loginUser.NickName = user.NickName; CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.UserId, permissions); + //TODO 生成token (HttpContext.User的赋值) return SUCCESS(JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser))); } diff --git a/DOAN.Admin.WebApi/Program.cs b/DOAN.Admin.WebApi/Program.cs index 04b25c4..dde3ee4 100644 --- a/DOAN.Admin.WebApi/Program.cs +++ b/DOAN.Admin.WebApi/Program.cs @@ -21,8 +21,24 @@ builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -//注入HttpContextAccessor -builder.Services.AddSingleton(); +//注入HttpContextAccessor TODO 这地方就是配置httpcontext https://blog.csdn.net/iqifenxia/article/details/121740805 +//builder.Services.AddSingleton(); +builder.Services.AddHttpContextAccessor(); +/* + 在ASP.NET Core中,`IHttpContextAccessor`是用于访问HTTP请求上下文的接口,而`HttpContextAccessor`是`IHttpContextAccessor`接口的一个默认实现。 + +区别在于: +1. `Services.AddSingleton()`会将`HttpContextAccessor`注册为`IHttpContextAccessor`接口的实现,并使用单例模式(singleton)将实例注册到应用程序中。这意味着在整个应用程序生命周期中,只会有一个`HttpContextAccessor`实例被创建并共享。 + +2. `Services.AddHttpContextAccessor()`是ASP.NET Core提供的一种快捷方法,会将`HttpContextAccessor`注册为`IHttpContextAccessor`接口的默认实现,并采用Scoped生命周期。Scoped生命周期意味着在同一个请求范围内,每次请求都会创建一个新的`HttpContextAccessor`实例,并在请求结束时销毁。 + +通常建议使用`Services.AddHttpContextAccessor()`来注册`HttpContextAccessor`,因为它是ASP.NET Core的标准做法,而且会自动处理实例的生命周期管理。 + +希望这个解释对您有帮助!如果您有任何其他问题,请随时告诉我。 + + */ + + // 跨域配置 builder.Services.AddCors(builder.Configuration); // 显示logo @@ -35,8 +51,8 @@ builder.Services.AddCaptcha(builder.Configuration); //IPRatelimit builder.Services.AddIPRate(builder.Configuration); -//builder.Services.AddSession(); -builder.Services.AddHttpContextAccessor(); +//builder.Services.AddSession(); + //绑定整个对象到Model上 builder.Services.Configure(builder.Configuration); diff --git a/Infrastructure/JwtUtil.cs b/Infrastructure/JwtUtil.cs index bf6a71d..78802c6 100644 --- a/Infrastructure/JwtUtil.cs +++ b/Infrastructure/JwtUtil.cs @@ -130,7 +130,7 @@ namespace Infrastructure if (jwtSecurityToken == null) return null; IEnumerable claims = jwtSecurityToken?.Claims; TokenModel loginUser = null; - + //TODO 取出ClaimTypes.UserData 用户数据信息 var userData = claims.FirstOrDefault(x => x.Type == ClaimTypes.UserData)?.Value; if (userData != null) { @@ -157,6 +157,7 @@ namespace Infrastructure { new Claim(ClaimTypes.PrimarySid, user.UserId.ToString()), new Claim(ClaimTypes.Name, user.UserName), + new Claim(ClaimTypes.UserData, JsonConvert.SerializeObject(user)) }; diff --git a/Infrastructure/Model/TokenModel.cs b/Infrastructure/Model/TokenModel.cs index bdfd86a..e624778 100644 --- a/Infrastructure/Model/TokenModel.cs +++ b/Infrastructure/Model/TokenModel.cs @@ -9,6 +9,7 @@ namespace Infrastructure.Model public long UserId { get; set; } public long DeptId { get; set; } public string UserName { get; set; } + public string NickName { get; set; } /// /// 角色集合 /// diff --git a/Infrastructure/WebExtensions/EntityExtension.cs b/Infrastructure/WebExtensions/EntityExtension.cs index c946e6d..6c47528 100644 --- a/Infrastructure/WebExtensions/EntityExtension.cs +++ b/Infrastructure/WebExtensions/EntityExtension.cs @@ -25,6 +25,29 @@ namespace Infrastructure return source; } + /// + /// 用昵称创造 + /// + /// + /// + /// + /// + public static TSource ToCreate_nickName(this TSource source, HttpContext? context = null) + { + var types = source?.GetType(); + if (types == null || context == null) return source; + BindingFlags flag = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; + + types.GetProperty("CreateTime", flag)?.SetValue(source, DateTime.Now, null); + types.GetProperty("CreatedTime", flag)?.SetValue(source, DateTime.Now, null); + types.GetProperty("AddTime", flag)?.SetValue(source, DateTime.Now, null); + types.GetProperty("CreateBy", flag)?.SetValue(source, context.GetNickName(), null); + types.GetProperty("CreatedBy", flag)?.SetValue(source, context.GetNickName(), null); + types.GetProperty("Create_by", flag)?.SetValue(source, context.GetNickName(), null); + types.GetProperty("UserId", flag)?.SetValue(source, context.GetNickName(), null); + + return source; + } public static TSource ToUpdate(this TSource source, HttpContext? context = null) { @@ -41,6 +64,28 @@ namespace Infrastructure return source; } + /// + /// 用昵称更新 + /// + /// + /// + /// + /// + public static TSource ToUpdate_nickName(this TSource source, HttpContext? context = null) + { + var types = source?.GetType(); + if (types == null || context == null) return source; + BindingFlags flag = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; + types.GetProperty("UpdateTime", flag)?.SetValue(source, DateTime.Now, null); + types.GetProperty("UpdatedTime", flag)?.SetValue(source, DateTime.Now, null); + types.GetProperty("Update_time", flag)?.SetValue(source, DateTime.Now, null); + types.GetProperty("UpdateBy", flag)?.SetValue(source, context.GetNickName(), null); + types.GetProperty("UpdatedBy", flag)?.SetValue(source, context.GetNickName(), null); + types.GetProperty("Update_by", flag)?.SetValue(source, context.GetNickName(), null); + + return source; + } + } } diff --git a/Infrastructure/WebExtensions/HttpContextExtension.cs b/Infrastructure/WebExtensions/HttpContextExtension.cs index 23efa03..a6e42cf 100644 --- a/Infrastructure/WebExtensions/HttpContextExtension.cs +++ b/Infrastructure/WebExtensions/HttpContextExtension.cs @@ -8,6 +8,8 @@ using System.Security.Claims; using System.Text; using System.Text.RegularExpressions; using UAParser; +using Infrastructure; +using Infrastructure.Model; namespace Infrastructure.Extensions { @@ -89,9 +91,20 @@ namespace Infrastructure.Extensions { var uid = context.User?.Identity?.Name; + + return uid; } + + // 把获取 username 改成昵称 + public static string GetNickName(this HttpContext context) + { + TokenModel tokenModel= JwtUtil.GetLoginUser(context); + + + return tokenModel?.NickName; + } /// /// 判断是否是管理员 ///