新增Token 生成,校验,刷新功能
(暂时禁用Token功能 如果想要启用,在WebApiConfig.cs文件中解除注释)
1个文件已添加
17个文件已修改
324 ■■■■■ 已修改文件
DBUtility/obj/Release/DBUtility.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
DBUtility/obj/Release/DBUtility.csproj.GenerateResource.Cache 补丁 | 查看 | 原始文档 | blame | 历史
Model/obj/Release/Model.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
NETERPNoWin/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache 补丁 | 查看 | 原始文档 | blame | 历史
SQLHelper/obj/Release/SQLHelper.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/App_Start/WebApiConfig.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/BaseSet/Xt_grdAlignment_WMESController.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/JHGL/Gy_RoutingBillController.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/SBGL/Gy_EquipFileMainController.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/WebAPIController.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/条码管理/WEBSController.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Global.asax.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Properties/PublishProfiles/FolderProfile4.pubxml.user 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Service/JwtAuthorizeAttribute.cs 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Service/TokenAppendHandler.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Utility/JWTHelper.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/WebAPI.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/WebAPI.csproj.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DBUtility/obj/Release/DBUtility.csproj.AssemblyReference.cache
Binary files differ
DBUtility/obj/Release/DBUtility.csproj.GenerateResource.Cache
Binary files differ
Model/obj/Release/Model.csproj.AssemblyReference.cache
Binary files differ
NETERPNoWin/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
SQLHelper/obj/Release/SQLHelper.csproj.AssemblyReference.cache
Binary files differ
WebAPI/App_Start/WebApiConfig.cs
@@ -29,6 +29,12 @@
                routeTemplate: "actionapi/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            // å…¨å±€å¯ç”¨ JWT è®¤è¯
            // config.Filters.Add(new JwtAuthorizeAttribute());
            // å¯ç”¨JWT响应拦截器,自动刷新JWT
            // config.MessageHandlers.Add(new TokenAppendHandler());
        }
    }
}
WebAPI/Controllers/BaseSet/Xt_grdAlignment_WMESController.cs
@@ -12,6 +12,7 @@
using WebAPI.Models;
namespace WebAPI.Controllers.BaseSet
{
    [AllowAnonymous]
    public class Xt_grdAlignment_WMESController : ApiController
    {
        private json objJsonResult = new json();
@@ -875,6 +876,8 @@
        #region æŠ¥é”™ä¿¡æ¯ æŸ¥è¯¢
        [Route("Xt_grdAlignment_WMES/SelectMessageError")]
        [HttpGet]
        [AllowAnonymous]
        public object SelectMessageError(string ErrorCode)
        {
            try
WebAPI/Controllers/JHGL/Gy_RoutingBillController.cs
@@ -2648,6 +2648,8 @@
        #region å·¥è‰ºè·¯çº¿éœ€è¦æˆ‘审批流审批的
        [Route("Gy_Routing/NeedChecklist")]
        [HttpGet]
        [AllowAnonymous]
        public object NeedChecklist(string user, string userid)
        {
            try
WebAPI/Controllers/SBGL/Gy_EquipFileMainController.cs
@@ -1322,6 +1322,73 @@
        }
        #endregion
        #region è®¾å¤‡è¿è¡ŒæŠ¥è¡¨(分页)
        [Route("SB_EquipRunningStatus/ReportPage")]
        [HttpGet]
        public object ReportPage(string sWhere, string user, int page=1, int size=50)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //if (!DBUtility.ClsPub.Security_Log("Gy_EquipFileList", 1, false, user))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "没有查看权限";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_Sb_EquipRunningStatusReport " + sWhere + " order by æ‰€å±žæ—¥æœŸ desc", "h_v_Sb_EquipRunningStatusReport");
                }
                else
                {
                    string sql1 = "select * from h_v_Sb_EquipRunningStatusReport where 1 = 1 ";
                    string sql = sql1 + sWhere + " order by æ‰€å±žæ—¥æœŸ desc";
                    sql += $" offset {(page - 1) * size} rows fetch next {size} rows only";
                    ds = oCN.RunProcReturn(sql, "h_v_Sb_EquipRunningStatusReport");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = columnNameList;
                return objJsonResult;
                //if (ds.Tables[0].Rows.Count != 0 && ds != null)
                //{
                //}
                //else
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "无数据";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region è®¾å¤‡è¿è¡ŒçŠ¶æ€æŠ¥è¡¨
        [Route("SB_EquipRunningStatus/Report")]
WebAPI/Controllers/WebAPIController.cs
@@ -340,6 +340,7 @@
        /// <returns></returns>
        [Route("Web/GetUser")]
        [HttpGet]
        [AllowAnonymous]
        public object GetUser(string UserName, string PassWord, string HOrgName)
        {
            try
@@ -384,11 +385,23 @@
                    }
                }
                if (!oSystemParameter.ShowBill(ref DBUtility.ClsPub.sErrInfo))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "登录异常!Token ç”Ÿæˆå¼‚常,无法获取公司信息!";
                }
                string tokenStr = Utility.JWTHelper.GenerateToken(UserName.Trim(), DBUtility.ClsPub.StrToPsd(PassWord.Trim()));
                objjson.code = "0";
                objjson.count = 1;
                objjson.Message = "[0000-1-073]登录成功!";
                objjson.data = ds.Tables[0];
                return objjson;
                JObject jobjJsonResult = JObject.FromObject(objjson);
                jobjJsonResult["token"] = tokenStr;
                return jobjJsonResult;
            }
            catch (Exception e)
@@ -2619,6 +2632,7 @@
        /// <returns></returns>
        [Route("Web/GetDataBases")]
        [HttpGet]
        [AllowAnonymous]
        public object GetDataBases()
        {
            try
@@ -18965,6 +18979,7 @@
        /// <returns></returns>
        [Route("Web/GetOrganizations")]
        [HttpGet]
        [AllowAnonymous]
        public object GetOrganizations()
        {
            try
@@ -18997,6 +19012,7 @@
        /// <returns></returns>
        [Route("Web/BaseInfo")]
        [HttpGet]
        [AllowAnonymous]
        public object GetBaseInfo()
        {
            try
WebAPI/Controllers/ÌõÂë¹ÜÀí/WEBSController.cs
@@ -46,6 +46,7 @@
        /// <returns></returns>
        [Route("WEBSController/GetUser_Json")]
        [HttpGet]
        [AllowAnonymous]
        public object GetUser_Json(string HUserNumber, string HPassWord, Int64 HStockOrgID, string HStockOrgName)
        {
            try
@@ -91,11 +92,23 @@
                        return objJsonResult;
                    }
                    if(!oSystemParameter.ShowBill(ref DBUtility.ClsPub.sErrInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "登录异常!Token ç”Ÿæˆå¼‚常,无法获取公司信息!";
                    }
                    string tokenStr = JWTHelper.GenerateToken(ds.Tables[0].Rows[0]["Czybm"].ToString(), ds.Tables[0].Rows[0]["Czmm"].ToString());
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "登录成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                    JObject jobjJsonResult = JObject.FromObject(objJsonResult);
                    jobjJsonResult["token"] = tokenStr;
                    return jobjJsonResult;
                }
            }
            catch (Exception e)
WebAPI/Global.asax.cs
@@ -11,6 +11,7 @@
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    }
WebAPI/Properties/PublishProfiles/FolderProfile4.pubxml.user
@@ -5,7 +5,7 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_PublishTargetUrl>D:\网站发布\智云MESWMS\API</_PublishTargetUrl>
    <History>True|2026-03-24T00:56:28.1340424Z;True|2026-03-24T08:11:40.8167004+08:00;False|2026-03-24T08:10:24.5227115+08:00;True|2026-03-23T16:52:06.1962112+08:00;True|2026-03-23T10:48:43.9146974+08:00;False|2026-03-23T10:47:37.6567528+08:00;True|2026-03-23T10:21:45.2785227+08:00;False|2026-03-23T10:21:38.6946638+08:00;True|2026-03-20T13:20:00.4199413+08:00;False|2026-03-20T13:19:48.2280600+08:00;True|2026-03-19T16:53:44.5050326+08:00;True|2026-03-19T10:10:35.5101923+08:00;False|2026-03-19T10:10:15.7270659+08:00;True|2026-03-18T19:51:55.1022153+08:00;True|2026-03-18T19:41:13.5178535+08:00;False|2026-03-18T19:40:38.2085412+08:00;True|2026-03-18T09:40:21.0697989+08:00;True|2026-03-18T09:34:25.1335941+08:00;False|2026-03-18T09:33:56.8767961+08:00;False|2026-03-17T11:45:46.0943251+08:00;True|2026-03-16T14:55:19.5092172+08:00;True|2026-03-16T14:39:12.2885876+08:00;True|2026-03-16T13:20:59.6155796+08:00;True|2026-03-16T12:53:38.9806066+08:00;False|2026-03-16T12:53:28.1149911+08:00;True|2026-03-16T10:21:54.6583129+08:00;False|2026-03-16T10:20:22.8166196+08:00;True|2026-03-13T13:56:44.7436815+08:00;True|2026-03-13T13:48:09.2962246+08:00;True|2026-03-13T10:01:06.8006672+08:00;False|2026-03-13T09:59:31.4203821+08:00;True|2026-03-09T01:54:24.1336085+08:00;False|2026-03-09T01:53:17.3398700+08:00;True|2026-03-09T01:28:43.0746681+08:00;True|2026-03-09T00:35:43.7572081+08:00;False|2026-03-09T00:34:44.1380553+08:00;True|2026-03-02T10:58:08.4918461+08:00;True|2026-02-28T14:36:37.1813756+08:00;True|2026-02-28T09:10:06.2035727+08:00;True|2026-02-28T08:45:06.8758170+08:00;False|2026-02-28T08:45:00.2780485+08:00;True|2026-02-27T16:29:24.9278951+08:00;False|2026-02-27T16:29:01.8985145+08:00;True|2026-02-27T15:25:58.1156917+08:00;False|2026-02-27T15:25:50.1203408+08:00;True|2026-02-27T08:48:32.3741487+08:00;False|2026-02-27T08:47:49.7647299+08:00;True|2026-02-26T13:55:29.1843761+08:00;True|2026-02-26T10:17:02.6775428+08:00;False|2026-02-26T10:15:56.8080083+08:00;True|2026-02-25T16:35:36.1616346+08:00;False|2026-02-25T16:35:02.7930400+08:00;True|2026-02-25T15:14:31.7665279+08:00;True|2026-02-25T15:06:38.2831461+08:00;True|2026-02-25T14:53:16.9553043+08:00;True|2026-02-25T14:18:12.0055193+08:00;True|2026-02-25T14:11:45.2316738+08:00;True|2026-02-25T14:02:16.3161429+08:00;True|2026-02-25T13:47:25.4930099+08:00;False|2026-02-25T13:46:34.1837894+08:00;True|2026-02-24T10:25:01.2146652+08:00;True|2026-02-24T10:16:06.3505078+08:00;True|2026-02-24T10:08:41.7064926+08:00;False|2026-02-24T10:07:25.4868308+08:00;True|2026-02-21T14:56:37.2206752+08:00;True|2026-02-21T14:53:44.6277903+08:00;True|2026-02-21T14:40:10.4687091+08:00;False|2026-02-21T14:39:13.1736140+08:00;True|2026-02-11T11:45:25.6746436+08:00;True|2026-02-11T11:44:47.3185555+08:00;True|2026-02-11T10:54:59.0679758+08:00;True|2026-02-11T10:43:35.2341241+08:00;True|2026-02-11T10:36:26.6768242+08:00;True|2026-02-11T10:26:54.7470684+08:00;True|2026-02-11T10:26:14.5696000+08:00;True|2026-02-11T10:19:17.3267746+08:00;True|2026-02-11T10:03:08.9096446+08:00;True|2026-02-11T10:00:03.1731421+08:00;False|2026-02-11T09:58:47.2916714+08:00;True|2026-02-10T15:11:02.0203382+08:00;True|2026-02-10T15:07:21.6761915+08:00;True|2026-02-10T14:56:44.3660951+08:00;True|2026-02-10T14:42:24.1573010+08:00;True|2026-02-10T14:17:49.6012996+08:00;True|2026-02-10T10:54:27.8849732+08:00;True|2026-02-10T10:37:09.4615737+08:00;True|2026-02-10T10:32:50.2882198+08:00;True|2026-02-10T10:16:38.5004114+08:00;True|2026-02-10T10:04:58.3653257+08:00;False|2026-02-10T10:04:05.6938724+08:00;True|2026-02-09T11:58:12.9122757+08:00;True|2026-02-09T11:52:51.2402774+08:00;True|2026-02-09T11:47:15.5230979+08:00;True|2026-02-09T10:53:15.6587025+08:00;False|2026-02-09T10:52:01.4586729+08:00;True|2026-02-05T12:04:14.1139398+08:00;True|2026-02-05T10:00:41.8883921+08:00;False|2026-02-05T09:59:49.2086159+08:00;True|2026-02-04T13:30:53.8564398+08:00;True|2026-02-04T13:30:06.5486103+08:00;True|2026-02-04T13:21:44.7322601+08:00;True|2026-02-04T13:15:45.0093895+08:00;True|2026-02-04T13:06:30.4891537+08:00;False|2026-02-04T13:05:35.5287589+08:00;True|2026-02-04T12:39:42.2682329+08:00;True|2026-02-04T12:21:52.9722100+08:00;True|2026-02-04T12:16:07.8303016+08:00;True|2026-02-04T12:08:43.8268899+08:00;True|2026-02-04T12:03:26.1174616+08:00;True|2026-02-04T10:33:15.5394044+08:00;False|2026-02-04T10:32:30.7038502+08:00;True|2026-02-02T15:42:04.9554792+08:00;True|2026-02-02T15:39:28.7017318+08:00;True|2026-02-02T15:38:33.5592835+08:00;True|2026-02-02T15:34:24.8450917+08:00;True|2026-02-02T15:30:36.5990146+08:00;True|2026-02-02T15:09:46.1965065+08:00;True|2026-02-02T15:09:24.9794288+08:00;True|2026-02-02T15:05:46.0763516+08:00;True|2026-02-02T14:56:30.1210013+08:00;True|2026-02-02T14:52:50.7435709+08:00;True|2026-02-02T14:47:49.5891710+08:00;True|2026-02-02T14:43:23.0006294+08:00;True|2026-02-02T14:31:10.1220612+08:00;True|2026-02-02T14:21:15.6540317+08:00;True|2026-02-02T14:15:41.6183116+08:00;True|2026-02-02T14:11:32.1234982+08:00;True|2026-02-02T14:01:34.6298901+08:00;True|2026-02-02T13:55:03.4760402+08:00;True|2026-02-02T13:49:00.0420220+08:00;True|2026-02-02T13:17:17.0678676+08:00;False|2026-02-02T13:15:46.0360589+08:00;False|2026-02-02T13:15:27.1689505+08:00;False|2026-02-02T13:14:27.3078641+08:00;True|2026-02-02T12:55:41.9272586+08:00;True|2026-02-02T12:55:22.0826476+08:00;True|2026-02-02T12:09:21.8247404+08:00;True|2026-02-02T12:03:58.9256304+08:00;True|2026-02-02T11:56:01.5744871+08:00;True|2026-02-02T11:42:30.2218073+08:00;True|2026-02-02T10:59:29.6077968+08:00;False|2026-02-02T10:59:08.7803594+08:00;True|2026-01-29T14:40:47.4658031+08:00;True|2026-01-29T14:36:18.2141550+08:00;True|2026-01-29T14:32:52.4872179+08:00;True|2026-01-29T14:32:06.4197291+08:00;True|2026-01-29T14:09:33.9372276+08:00;True|2026-01-29T14:08:17.6503129+08:00;True|2026-01-29T14:06:27.5784162+08:00;True|2026-01-29T13:10:48.6581055+08:00;True|2026-01-29T13:07:28.5589276+08:00;True|2026-01-29T12:44:24.3707488+08:00;True|2026-01-29T12:42:34.6204068+08:00;True|2026-01-29T12:39:55.3867683+08:00;True|2026-01-29T12:29:41.8565928+08:00;True|2026-01-29T12:17:04.5932345+08:00;True|2026-01-29T10:08:23.4550691+08:00;True|2026-01-29T10:04:05.4236307+08:00;False|2026-01-29T10:03:18.4044168+08:00;True|2026-01-28T16:00:38.3698743+08:00;True|2026-01-28T14:15:04.1203132+08:00;True|2026-01-28T14:03:32.3230252+08:00;False|2026-01-28T14:02:41.6157812+08:00;True|2026-01-28T13:18:24.5590390+08:00;True|2026-01-28T13:10:49.5716734+08:00;True|2026-01-28T12:25:03.3201915+08:00;True|2026-01-28T12:24:37.6029904+08:00;True|2026-01-28T12:16:13.3862190+08:00;True|2026-01-28T11:43:57.8268938+08:00;True|2026-01-28T10:57:22.9246991+08:00;True|2026-01-28T10:49:34.6185686+08:00;True|2026-01-28T10:44:07.6308515+08:00;True|2026-01-28T10:36:00.0391721+08:00;True|2026-01-28T10:27:26.1658915+08:00;False|2026-01-28T10:27:00.5898601+08:00;True|2026-01-27T15:02:41.1819512+08:00;True|2026-01-27T14:55:32.3962262+08:00;True|2026-01-27T14:31:09.0105130+08:00;True|2026-01-27T13:19:08.8705541+08:00;True|2026-01-27T11:43:17.0109305+08:00;True|2026-01-27T10:53:13.5941761+08:00;True|2026-01-27T10:49:18.5740094+08:00;True|2026-01-27T10:43:29.4337654+08:00;True|2026-01-27T10:00:49.1779297+08:00;False|2026-01-27T10:00:34.2083888+08:00;True|2026-01-26T16:29:09.5100352+08:00;False|2026-01-26T16:29:04.6554601+08:00;False|2026-01-26T14:39:05.7640208+08:00;True|2026-01-26T09:57:23.8775907+08:00;False|2026-01-26T09:56:43.8599383+08:00;True|2026-01-26T09:37:16.8828589+08:00;False|2026-01-26T09:36:35.9597492+08:00;True|2026-01-25T15:20:11.0096169+08:00;True|2026-01-25T14:52:25.7167654+08:00;True|2026-01-25T14:28:16.6779637+08:00;False|2026-01-25T14:27:32.6753765+08:00;True|2026-01-23T16:17:17.9227805+08:00;True|2026-01-23T14:37:25.7929932+08:00;True|2026-01-23T14:32:25.7611106+08:00;False|2026-01-23T14:31:28.4811198+08:00;True|2026-01-22T09:55:07.0908298+08:00;True|2026-01-22T09:38:49.9102490+08:00;False|2026-01-22T09:37:53.0384929+08:00;True|2026-01-21T16:50:27.5625267+08:00;True|2026-01-21T10:50:18.7634322+08:00;True|2026-01-21T10:47:56.7913811+08:00;True|2026-01-21T10:41:46.5883817+08:00;True|2026-01-21T09:29:22.5824101+08:00;False|2026-01-21T09:28:13.4362586+08:00;True|2026-01-20T14:26:36.7806712+08:00;True|2026-01-20T13:13:01.3064754+08:00;False|2026-01-20T13:12:08.1800841+08:00;True|2026-01-20T10:28:19.5250951+08:00;True|2026-01-20T10:27:41.5947282+08:00;True|2026-01-20T10:23:10.6474490+08:00;True|2026-01-20T10:07:24.8412652+08:00;True|2026-01-20T09:53:19.8583529+08:00;True|2026-01-20T08:21:20.5302494+08:00;False|2026-01-20T08:20:24.6093320+08:00;True|2026-01-19T15:58:34.1439056+08:00;True|2026-01-19T15:56:47.6488483+08:00;True|2026-01-19T15:12:36.9286562+08:00;True|2026-01-19T14:55:17.2807312+08:00;True|2026-01-19T14:47:03.8892836+08:00;True|2026-01-19T14:36:15.0507410+08:00;True|2026-01-19T14:26:05.5060287+08:00;True|2026-01-19T13:50:54.8654304+08:00;True|2026-01-19T13:37:47.2294303+08:00;True|2026-01-19T13:20:13.3781676+08:00;True|2026-01-19T13:07:18.8111360+08:00;True|2026-01-19T13:01:15.1432453+08:00;True|2026-01-19T11:54:26.6582081+08:00;True|2026-01-19T11:23:28.6100843+08:00;True|2026-01-19T08:41:23.8724527+08:00;True|2026-01-19T08:34:06.3247836+08:00;True|2026-01-19T07:48:11.5052413+08:00;False|2026-01-19T07:47:21.4586297+08:00;True|2026-01-18T14:27:24.9640228+08:00;True|2026-01-18T13:21:44.9690334+08:00;False|2026-01-18T13:20:08.6314025+08:00;False|2026-01-16T16:53:24.3290896+08:00;True|2026-01-16T09:03:14.4122067+08:00;True|2026-01-16T08:44:23.0342932+08:00;False|2026-01-16T08:43:34.3488415+08:00;True|2026-01-15T16:27:10.8480719+08:00;False|2026-01-15T16:26:06.6002625+08:00;True|2026-01-15T13:04:43.0602637+08:00;</History>
    <History>True|2026-03-25T08:35:08.8050103Z;True|2026-03-25T15:37:15.6317912+08:00;True|2026-03-25T15:27:23.3932111+08:00;True|2026-03-25T15:11:11.1967438+08:00;True|2026-03-25T15:00:30.5147369+08:00;True|2026-03-25T14:52:56.0204639+08:00;True|2026-03-25T14:47:51.3529176+08:00;True|2026-03-25T14:46:04.5196908+08:00;True|2026-03-25T14:40:04.4992796+08:00;True|2026-03-25T14:38:45.0508837+08:00;True|2026-03-25T13:40:00.6412255+08:00;True|2026-03-25T13:17:17.5126232+08:00;True|2026-03-25T13:05:28.8923666+08:00;True|2026-03-25T11:16:11.6477493+08:00;True|2026-03-25T10:56:54.5866590+08:00;False|2026-03-25T10:55:40.1765744+08:00;True|2026-03-24T08:56:28.1340424+08:00;True|2026-03-24T08:11:40.8167004+08:00;False|2026-03-24T08:10:24.5227115+08:00;True|2026-03-23T16:52:06.1962112+08:00;True|2026-03-23T10:48:43.9146974+08:00;False|2026-03-23T10:47:37.6567528+08:00;True|2026-03-23T10:21:45.2785227+08:00;False|2026-03-23T10:21:38.6946638+08:00;True|2026-03-20T13:20:00.4199413+08:00;False|2026-03-20T13:19:48.2280600+08:00;True|2026-03-19T16:53:44.5050326+08:00;True|2026-03-19T10:10:35.5101923+08:00;False|2026-03-19T10:10:15.7270659+08:00;True|2026-03-18T19:51:55.1022153+08:00;True|2026-03-18T19:41:13.5178535+08:00;False|2026-03-18T19:40:38.2085412+08:00;True|2026-03-18T09:40:21.0697989+08:00;True|2026-03-18T09:34:25.1335941+08:00;False|2026-03-18T09:33:56.8767961+08:00;False|2026-03-17T11:45:46.0943251+08:00;True|2026-03-16T14:55:19.5092172+08:00;True|2026-03-16T14:39:12.2885876+08:00;True|2026-03-16T13:20:59.6155796+08:00;True|2026-03-16T12:53:38.9806066+08:00;False|2026-03-16T12:53:28.1149911+08:00;True|2026-03-16T10:21:54.6583129+08:00;False|2026-03-16T10:20:22.8166196+08:00;True|2026-03-13T13:56:44.7436815+08:00;True|2026-03-13T13:48:09.2962246+08:00;True|2026-03-13T10:01:06.8006672+08:00;False|2026-03-13T09:59:31.4203821+08:00;True|2026-03-09T01:54:24.1336085+08:00;False|2026-03-09T01:53:17.3398700+08:00;True|2026-03-09T01:28:43.0746681+08:00;True|2026-03-09T00:35:43.7572081+08:00;False|2026-03-09T00:34:44.1380553+08:00;True|2026-03-02T10:58:08.4918461+08:00;True|2026-02-28T14:36:37.1813756+08:00;True|2026-02-28T09:10:06.2035727+08:00;True|2026-02-28T08:45:06.8758170+08:00;False|2026-02-28T08:45:00.2780485+08:00;True|2026-02-27T16:29:24.9278951+08:00;False|2026-02-27T16:29:01.8985145+08:00;True|2026-02-27T15:25:58.1156917+08:00;False|2026-02-27T15:25:50.1203408+08:00;True|2026-02-27T08:48:32.3741487+08:00;False|2026-02-27T08:47:49.7647299+08:00;True|2026-02-26T13:55:29.1843761+08:00;True|2026-02-26T10:17:02.6775428+08:00;False|2026-02-26T10:15:56.8080083+08:00;True|2026-02-25T16:35:36.1616346+08:00;False|2026-02-25T16:35:02.7930400+08:00;True|2026-02-25T15:14:31.7665279+08:00;True|2026-02-25T15:06:38.2831461+08:00;True|2026-02-25T14:53:16.9553043+08:00;True|2026-02-25T14:18:12.0055193+08:00;True|2026-02-25T14:11:45.2316738+08:00;True|2026-02-25T14:02:16.3161429+08:00;True|2026-02-25T13:47:25.4930099+08:00;False|2026-02-25T13:46:34.1837894+08:00;True|2026-02-24T10:25:01.2146652+08:00;True|2026-02-24T10:16:06.3505078+08:00;True|2026-02-24T10:08:41.7064926+08:00;False|2026-02-24T10:07:25.4868308+08:00;True|2026-02-21T14:56:37.2206752+08:00;True|2026-02-21T14:53:44.6277903+08:00;True|2026-02-21T14:40:10.4687091+08:00;False|2026-02-21T14:39:13.1736140+08:00;True|2026-02-11T11:45:25.6746436+08:00;True|2026-02-11T11:44:47.3185555+08:00;True|2026-02-11T10:54:59.0679758+08:00;True|2026-02-11T10:43:35.2341241+08:00;True|2026-02-11T10:36:26.6768242+08:00;True|2026-02-11T10:26:54.7470684+08:00;True|2026-02-11T10:26:14.5696000+08:00;True|2026-02-11T10:19:17.3267746+08:00;True|2026-02-11T10:03:08.9096446+08:00;True|2026-02-11T10:00:03.1731421+08:00;False|2026-02-11T09:58:47.2916714+08:00;True|2026-02-10T15:11:02.0203382+08:00;True|2026-02-10T15:07:21.6761915+08:00;True|2026-02-10T14:56:44.3660951+08:00;True|2026-02-10T14:42:24.1573010+08:00;True|2026-02-10T14:17:49.6012996+08:00;True|2026-02-10T10:54:27.8849732+08:00;True|2026-02-10T10:37:09.4615737+08:00;True|2026-02-10T10:32:50.2882198+08:00;True|2026-02-10T10:16:38.5004114+08:00;True|2026-02-10T10:04:58.3653257+08:00;False|2026-02-10T10:04:05.6938724+08:00;True|2026-02-09T11:58:12.9122757+08:00;True|2026-02-09T11:52:51.2402774+08:00;True|2026-02-09T11:47:15.5230979+08:00;True|2026-02-09T10:53:15.6587025+08:00;False|2026-02-09T10:52:01.4586729+08:00;True|2026-02-05T12:04:14.1139398+08:00;True|2026-02-05T10:00:41.8883921+08:00;False|2026-02-05T09:59:49.2086159+08:00;True|2026-02-04T13:30:53.8564398+08:00;True|2026-02-04T13:30:06.5486103+08:00;True|2026-02-04T13:21:44.7322601+08:00;True|2026-02-04T13:15:45.0093895+08:00;True|2026-02-04T13:06:30.4891537+08:00;False|2026-02-04T13:05:35.5287589+08:00;True|2026-02-04T12:39:42.2682329+08:00;True|2026-02-04T12:21:52.9722100+08:00;True|2026-02-04T12:16:07.8303016+08:00;True|2026-02-04T12:08:43.8268899+08:00;True|2026-02-04T12:03:26.1174616+08:00;True|2026-02-04T10:33:15.5394044+08:00;False|2026-02-04T10:32:30.7038502+08:00;True|2026-02-02T15:42:04.9554792+08:00;True|2026-02-02T15:39:28.7017318+08:00;True|2026-02-02T15:38:33.5592835+08:00;True|2026-02-02T15:34:24.8450917+08:00;True|2026-02-02T15:30:36.5990146+08:00;True|2026-02-02T15:09:46.1965065+08:00;True|2026-02-02T15:09:24.9794288+08:00;True|2026-02-02T15:05:46.0763516+08:00;True|2026-02-02T14:56:30.1210013+08:00;True|2026-02-02T14:52:50.7435709+08:00;True|2026-02-02T14:47:49.5891710+08:00;True|2026-02-02T14:43:23.0006294+08:00;True|2026-02-02T14:31:10.1220612+08:00;True|2026-02-02T14:21:15.6540317+08:00;True|2026-02-02T14:15:41.6183116+08:00;True|2026-02-02T14:11:32.1234982+08:00;True|2026-02-02T14:01:34.6298901+08:00;True|2026-02-02T13:55:03.4760402+08:00;True|2026-02-02T13:49:00.0420220+08:00;True|2026-02-02T13:17:17.0678676+08:00;False|2026-02-02T13:15:46.0360589+08:00;False|2026-02-02T13:15:27.1689505+08:00;False|2026-02-02T13:14:27.3078641+08:00;True|2026-02-02T12:55:41.9272586+08:00;True|2026-02-02T12:55:22.0826476+08:00;True|2026-02-02T12:09:21.8247404+08:00;True|2026-02-02T12:03:58.9256304+08:00;True|2026-02-02T11:56:01.5744871+08:00;True|2026-02-02T11:42:30.2218073+08:00;True|2026-02-02T10:59:29.6077968+08:00;False|2026-02-02T10:59:08.7803594+08:00;True|2026-01-29T14:40:47.4658031+08:00;True|2026-01-29T14:36:18.2141550+08:00;True|2026-01-29T14:32:52.4872179+08:00;True|2026-01-29T14:32:06.4197291+08:00;True|2026-01-29T14:09:33.9372276+08:00;True|2026-01-29T14:08:17.6503129+08:00;True|2026-01-29T14:06:27.5784162+08:00;True|2026-01-29T13:10:48.6581055+08:00;True|2026-01-29T13:07:28.5589276+08:00;True|2026-01-29T12:44:24.3707488+08:00;True|2026-01-29T12:42:34.6204068+08:00;True|2026-01-29T12:39:55.3867683+08:00;True|2026-01-29T12:29:41.8565928+08:00;True|2026-01-29T12:17:04.5932345+08:00;True|2026-01-29T10:08:23.4550691+08:00;True|2026-01-29T10:04:05.4236307+08:00;False|2026-01-29T10:03:18.4044168+08:00;True|2026-01-28T16:00:38.3698743+08:00;True|2026-01-28T14:15:04.1203132+08:00;True|2026-01-28T14:03:32.3230252+08:00;False|2026-01-28T14:02:41.6157812+08:00;True|2026-01-28T13:18:24.5590390+08:00;True|2026-01-28T13:10:49.5716734+08:00;True|2026-01-28T12:25:03.3201915+08:00;True|2026-01-28T12:24:37.6029904+08:00;True|2026-01-28T12:16:13.3862190+08:00;True|2026-01-28T11:43:57.8268938+08:00;True|2026-01-28T10:57:22.9246991+08:00;True|2026-01-28T10:49:34.6185686+08:00;True|2026-01-28T10:44:07.6308515+08:00;True|2026-01-28T10:36:00.0391721+08:00;True|2026-01-28T10:27:26.1658915+08:00;False|2026-01-28T10:27:00.5898601+08:00;True|2026-01-27T15:02:41.1819512+08:00;True|2026-01-27T14:55:32.3962262+08:00;True|2026-01-27T14:31:09.0105130+08:00;True|2026-01-27T13:19:08.8705541+08:00;True|2026-01-27T11:43:17.0109305+08:00;True|2026-01-27T10:53:13.5941761+08:00;True|2026-01-27T10:49:18.5740094+08:00;True|2026-01-27T10:43:29.4337654+08:00;True|2026-01-27T10:00:49.1779297+08:00;False|2026-01-27T10:00:34.2083888+08:00;True|2026-01-26T16:29:09.5100352+08:00;False|2026-01-26T16:29:04.6554601+08:00;False|2026-01-26T14:39:05.7640208+08:00;True|2026-01-26T09:57:23.8775907+08:00;False|2026-01-26T09:56:43.8599383+08:00;True|2026-01-26T09:37:16.8828589+08:00;False|2026-01-26T09:36:35.9597492+08:00;True|2026-01-25T15:20:11.0096169+08:00;True|2026-01-25T14:52:25.7167654+08:00;True|2026-01-25T14:28:16.6779637+08:00;False|2026-01-25T14:27:32.6753765+08:00;True|2026-01-23T16:17:17.9227805+08:00;True|2026-01-23T14:37:25.7929932+08:00;True|2026-01-23T14:32:25.7611106+08:00;False|2026-01-23T14:31:28.4811198+08:00;True|2026-01-22T09:55:07.0908298+08:00;True|2026-01-22T09:38:49.9102490+08:00;False|2026-01-22T09:37:53.0384929+08:00;True|2026-01-21T16:50:27.5625267+08:00;True|2026-01-21T10:50:18.7634322+08:00;True|2026-01-21T10:47:56.7913811+08:00;True|2026-01-21T10:41:46.5883817+08:00;True|2026-01-21T09:29:22.5824101+08:00;False|2026-01-21T09:28:13.4362586+08:00;True|2026-01-20T14:26:36.7806712+08:00;True|2026-01-20T13:13:01.3064754+08:00;False|2026-01-20T13:12:08.1800841+08:00;True|2026-01-20T10:28:19.5250951+08:00;True|2026-01-20T10:27:41.5947282+08:00;True|2026-01-20T10:23:10.6474490+08:00;True|2026-01-20T10:07:24.8412652+08:00;True|2026-01-20T09:53:19.8583529+08:00;True|2026-01-20T08:21:20.5302494+08:00;False|2026-01-20T08:20:24.6093320+08:00;True|2026-01-19T15:58:34.1439056+08:00;True|2026-01-19T15:56:47.6488483+08:00;True|2026-01-19T15:12:36.9286562+08:00;True|2026-01-19T14:55:17.2807312+08:00;True|2026-01-19T14:47:03.8892836+08:00;True|2026-01-19T14:36:15.0507410+08:00;True|2026-01-19T14:26:05.5060287+08:00;True|2026-01-19T13:50:54.8654304+08:00;True|2026-01-19T13:37:47.2294303+08:00;True|2026-01-19T13:20:13.3781676+08:00;True|2026-01-19T13:07:18.8111360+08:00;True|2026-01-19T13:01:15.1432453+08:00;True|2026-01-19T11:54:26.6582081+08:00;True|2026-01-19T11:23:28.6100843+08:00;True|2026-01-19T08:41:23.8724527+08:00;True|2026-01-19T08:34:06.3247836+08:00;True|2026-01-19T07:48:11.5052413+08:00;False|2026-01-19T07:47:21.4586297+08:00;True|2026-01-18T14:27:24.9640228+08:00;True|2026-01-18T13:21:44.9690334+08:00;False|2026-01-18T13:20:08.6314025+08:00;False|2026-01-16T16:53:24.3290896+08:00;True|2026-01-16T09:03:14.4122067+08:00;True|2026-01-16T08:44:23.0342932+08:00;False|2026-01-16T08:43:34.3488415+08:00;True|2026-01-15T16:27:10.8480719+08:00;False|2026-01-15T16:26:06.6002625+08:00;True|2026-01-15T13:04:43.0602637+08:00;</History>
  </PropertyGroup>
  <ItemGroup>
    <File Include="apiapp.json">
@@ -125,6 +125,15 @@
    <File Include="bin/Microsoft.CSharp.dll">
      <publishTime>09/26/2012 03:16:08</publishTime>
    </File>
    <File Include="bin/Microsoft.IdentityModel.JsonWebTokens.dll">
      <publishTime>11/21/2023 06:59:58</publishTime>
    </File>
    <File Include="bin/Microsoft.IdentityModel.Logging.dll">
      <publishTime>11/21/2023 07:01:42</publishTime>
    </File>
    <File Include="bin/Microsoft.IdentityModel.Tokens.dll">
      <publishTime>11/21/2023 07:08:26</publishTime>
    </File>
    <File Include="bin/Microsoft.Owin.Cors.dll">
      <publishTime>01/19/2019 04:50:50</publishTime>
    </File>
@@ -234,7 +243,7 @@
      <publishTime>09/26/2012 03:16:08</publishTime>
    </File>
    <File Include="bin/System.IdentityModel.Tokens.Jwt.dll">
      <publishTime>08/19/2014 18:03:34</publishTime>
      <publishTime>11/21/2023 06:58:04</publishTime>
    </File>
    <File Include="bin/System.Memory.dll">
      <publishTime>04/18/2019 00:24:34</publishTime>
@@ -330,13 +339,13 @@
      <publishTime>11/24/2014 19:18:48</publishTime>
    </File>
    <File Include="bin/WebAPI.dll">
      <publishTime>03/24/2026 08:56:12</publishTime>
      <publishTime>03/25/2026 16:34:51</publishTime>
    </File>
    <File Include="bin/WebAPI.pdb">
      <publishTime>03/24/2026 08:56:12</publishTime>
      <publishTime>03/25/2026 16:34:51</publishTime>
    </File>
    <File Include="bin/WebAPI.XmlSerializers.dll">
      <publishTime>03/24/2026 08:56:25</publishTime>
      <publishTime>03/25/2026 16:35:05</publishTime>
    </File>
    <File Include="bin/WebGrease.dll">
      <publishTime>07/18/2013 01:03:52</publishTime>
@@ -441,7 +450,7 @@
      <publishTime>04/21/2025 11:46:16</publishTime>
    </File>
    <File Include="packages.config">
      <publishTime>03/04/2026 13:17:49</publishTime>
      <publishTime>03/24/2026 16:14:20</publishTime>
    </File>
    <File Include="Properties/PublishProfiles/JFAPI.pubxml.user">
      <publishTime>12/07/2025 12:01:10</publishTime>
@@ -561,7 +570,7 @@
      <publishTime>04/21/2025 11:46:17</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>03/23/2026 16:52:04</publishTime>
      <publishTime>03/25/2026 10:56:54</publishTime>
    </File>
  </ItemGroup>
</Project>
WebAPI/Service/JwtAuthorizeAttribute.cs
@@ -7,37 +7,64 @@
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using WebAPI.Models;
using WebAPI.Utility;
public class JwtAuthorizeAttribute : AuthorizationFilterAttribute
{
    private json objjson = new json();
    private SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
    private Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
    private string campanyName = "";
    public JwtAuthorizeAttribute()
    {
        if (oSystemParameter.ShowBill(ref DBUtility.ClsPub.sErrInfo))
        {
            campanyName = oSystemParameter.omodel.WMS_CampanyName;
        }
    }
    // åŒæ­¥é‰´æƒ
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        // æ£€æŸ¥åŒ¿åè®¿é—®
        if (IsAnonymousAllowed(actionContext)) return;
        // èŽ·å–Token
        var token = GetTokenFromHeader(actionContext);
        if (string.IsNullOrEmpty(token))
        try
        {
            HandleUnauthorized(actionContext);
            return;
        }
            // æ£€æŸ¥åŒ¿åè®¿é—®
            if (IsAnonymousAllowed(actionContext)) return;
        // éªŒè¯Token
        var principal = JWTHelper.ValidateToken(token, "123");
        if (principal == null)
            // èŽ·å–Token
            var token = GetTokenFromHeader(actionContext);
            if (string.IsNullOrEmpty(token))
            {
                HandleUnauthorized(actionContext);
                return;
            }
            // éªŒè¯Token
            // å¯ä»¥å¢žåŠ æ›´ç»†ç²’åº¦çš„æŽ§åˆ¶ï¼Œæ·»åŠ  æ ¹æ®ç»„织ID åˆ¤æ–­ï¼ˆé—®é¢˜: å…¬å¸åä¸èƒ½ä½¿ç”¨ä¸­æ–‡ï¼Œå¯èƒ½éœ€è¦æ·»åŠ è‹±æ–‡å­—æ®µï¼‰
            var principal = JWTHelper.ValidateToken(token);
            if (principal == null)
            {
                HandleUnauthorized(actionContext);
                return;
            }
            // éªŒè¯æ˜¯å¦æ‹¥æœ‰è®¿é—®æ¨¡å—的权限
            // æœ‰ä¸¤ç§åˆ¤æ–­æ–¹å¼ ä¸€ç§æ˜¯é€šè¿‡è§’色去判断,一种是通过用户去判断 ç›®å‰æš‚时不做区分,后续可增加系统参数来进行区分
            // è®¾ç½®ç”¨æˆ·
            actionContext.RequestContext.Principal = principal;
        }
        catch (Exception e)
        {
            HandleUnauthorized(actionContext);
            return;
            HandleError(actionContext, e.Message);
        }
        // è®¾ç½®ç”¨æˆ·
        actionContext.RequestContext.Principal = principal;
    }
    // å¼‚步鉴权(满足WebAPI 2要求,兼容.NET4.5)
    // å¼‚步鉴权
    public override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
    {
        OnAuthorization(actionContext);
@@ -45,7 +72,7 @@
        return Task.FromResult(0);
    }
    // æ˜¯å¦å…è®¸åŒ¿åè®¿é—®
    // æ˜¯å¦å…è®¸åŒ¿åè®¿é—®(控制器级别和动作级别都可用)
    private bool IsAnonymousAllowed(HttpActionContext context)
    {
        return
@@ -70,7 +97,34 @@
    private void HandleUnauthorized(HttpActionContext context)
    {
        var response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
        response.Content = new StringContent("未授权,请登录后重试");
        objjson.code = "0";
        objjson.count = 0;
        objjson.Message = "未授权,请登录后重试";
        response.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(objjson),
            System.Text.Encoding.UTF8, "application/json");
        context.Response = response;
    }
    // 403 æ— æƒé™
    private void HandleForbidden(HttpActionContext context)
    {
        var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
        objjson.code = "0";
        objjson.count = 0;
        objjson.Message = "当前角色无权限";
        response.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(objjson),
            System.Text.Encoding.UTF8, "application/json");
        context.Response = response;
    }
    private void HandleError(HttpActionContext context, string ErrorInfo)
    {
        var response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
        objjson.code = "0";
        objjson.count = 0;
        objjson.Message = "服务器异常: " + ErrorInfo;
        response.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(objjson),
            System.Text.Encoding.UTF8, "application/json");
        context.Response = response;
    }
}
WebAPI/Service/TokenAppendHandler.cs
New file
@@ -0,0 +1,65 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using Newtonsoft.Json.Linq;
using WebAPI.Utility;
public class TokenAppendHandler : DelegatingHandler
    {
        protected override async Task<HttpResponseMessage> SendAsync(
       HttpRequestMessage request,
       CancellationToken cancellationToken)
        {
            // 1. å…ˆè®©è¯·æ±‚正常执行到 Action
            var response = await base.SendAsync(request, cancellationToken);
            try
            {
                // 2. åªå¤„理成功的请求
                if (response.IsSuccessStatusCode && response.Content != null)
                {
                    // 3. èŽ·å–æ—§ token
                    var oldToken = request.Headers.GetValues("token")?.FirstOrDefault();
                    if (string.IsNullOrEmpty(oldToken))
                        return response;
                    // 4. åˆ¤æ–­æ˜¯å¦éœ€è¦ç»­æœŸ
                    bool needRenew = JWTHelper.TokenAboutToExpire(oldToken);
                    if (!needRenew)
                        return response;
                    // 5. ç”Ÿæˆæ–° token
                    string newToken = JWTHelper.refreshToken(oldToken);
                    // 6. è¯»å–原本的返回数据
                    var json = await response.Content.ReadAsStringAsync();
                    JObject obj;
                    if (string.IsNullOrWhiteSpace(json))
                        obj = new JObject();
                    else
                        obj = JObject.Parse(json);
                    // 7. å…³é”®ï¼šè¿½åŠ  token å­—段到返回体
                    obj["token"] = newToken;
                    // 8. æ›¿æ¢æˆæ–°çš„返回内容
                    response.Content = new StringContent(
                        obj.ToString(),
                        System.Text.Encoding.UTF8,
                        "application/json");
                }
            }
            catch
            {
            }
            return response;
        }
    }
WebAPI/Utility/JWTHelper.cs
@@ -22,7 +22,7 @@
        new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecretKey));
        // ç­¾å‘ Token
        public static string GenerateToken(string userId, string userName, string HCampanyName)
        public static string GenerateToken(string userId, string userName, string HCampanyName= "zjzyms")
        {
            var claims = new[]
            {
@@ -45,7 +45,7 @@
        }
        // éªŒè¯ Token å¹¶è¿”回 ClaimsPrincipal
        public static ClaimsPrincipal ValidateToken(string token, string HCampanyName)
        public static ClaimsPrincipal ValidateToken(string token, string HCampanyName= "zjzyms")
        {
            var handler = new JwtSecurityTokenHandler();
@@ -75,5 +75,28 @@
                return null;
            }
        }
        // åˆ·æ–°Token
        public static string refreshToken(string token)
        {
            var jwt = new JwtSecurityTokenHandler().ReadJwtToken(token);
            var czybm = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value;
            var zymm = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name)?.Value;
            // é€šè¿‡ä¸Šä¸€ä¸ªtoken的值刷新token
            return GenerateToken(czybm, zymm);
        }
        // åˆ¤æ–­Token æ˜¯å¦å³å°†è¿‡æœŸ
        public static bool TokenAboutToExpire(string token)
        {
            var jwt = new JwtSecurityTokenHandler().ReadJwtToken(token);
            var validTo = jwt.ValidTo;
            if(validTo.Subtract(DateTime.UtcNow).TotalMinutes < 5)
            {
                return true;
            }
            return false;
        }
    }
}
WebAPI/WebAPI.csproj
@@ -1251,6 +1251,7 @@
    </Compile>
    <Compile Include="Utility\JWTHelper.cs" />
    <Compile Include="Utility\ServerTools.cs" />
    <Compile Include="Service\TokenAppendHandler.cs" />
    <Compile Include="Utility\Util.cs" />
    <Compile Include="Code\Common.cs" />
    <Compile Include="Code\Test2.cs" />
WebAPI/WebAPI.csproj.user
@@ -12,7 +12,7 @@
    <UseGlobalApplicationHostFile />
    <NameOfLastUsedPublishProfile>D:\gz\MES-WEB-API\MES-WEB-API\WebAPI\Properties\PublishProfiles\FolderProfile1.pubxml</NameOfLastUsedPublishProfile>
    <NameOfLastUsedPublishProfile>D:\gz\MES-WEB-API\MES-WEB-API\WebAPI\Properties\PublishProfiles\FolderProfile8.pubxml</NameOfLastUsedPublishProfile>
    <NameOfLastUsedPublishProfile>D:\工作代码\智云迈思\MES\MES-WEB-API\WebAPI\Properties\PublishProfiles\FolderProfile2.pubxml</NameOfLastUsedPublishProfile>
    <NameOfLastUsedPublishProfile>D:\WorkBench\MES-WEB-API\WebAPI\Properties\PublishProfiles\FolderProfile4.pubxml</NameOfLastUsedPublishProfile>
    <ProjectView>ShowAllFiles</ProjectView>
  </PropertyGroup>
  <ProjectExtensions>