From 25bfa4fa713ecd7495348d6645e5dd18b622aabd Mon Sep 17 00:00:00 2001 From: jackchenyang <874821510@qq.com> Date: Fri, 7 Jun 2024 15:13:34 +0800 Subject: [PATCH 1/3] 2112 --- FCL/BLL/APIService/SyncUserInfoService.cs | 10 +++--- FCL/FineUIPro.Web/ssocallback.aspx.cs | 40 ++++++++++++----------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/FCL/BLL/APIService/SyncUserInfoService.cs b/FCL/BLL/APIService/SyncUserInfoService.cs index 57988e6..90612d5 100644 --- a/FCL/BLL/APIService/SyncUserInfoService.cs +++ b/FCL/BLL/APIService/SyncUserInfoService.cs @@ -30,12 +30,12 @@ namespace BLL.APIService } public static void GetSyncUserInfo() { - var token = GetUserToken(); //获取接口token + //var token = GetUserToken(); //获取接口token var dic = GetDepartList(); //把本地数据库中的部门全部取出作为字典 var dicUser = GetUserInfoByAccount(); //同上把所有用户取出来 - //string file = System.Web.HttpContext.Current.Server.MapPath("~/data.txt"); - //string result = System.IO.File.ReadAllText(file); - string result = BLL.Common.HttpHelper.HttpPostRequest(GETHRINfOAPI, "", token); + string file = System.Web.HttpContext.Current.Server.MapPath("~/data.txt"); + string result = System.IO.File.ReadAllText(file); + //string result = BLL.Common.HttpHelper.HttpPostRequest(GETHRINfOAPI, "", token); var data = JsonHelper.DeserializeJsonToObject>>(result); List logList = new List(); if (data.code == "200") @@ -246,7 +246,7 @@ namespace BLL.APIService /// private static Dictionary GetUserInfoByAccount() { - return BLL.Funs.DB.Sys_User.Select(t => new { t.UserId, t.Account }).ToList() + return BLL.Funs.DB.Sys_User.Where(t=>t.IsPost==true).Select(t => new { t.UserId, t.Account }).ToList() .ToDictionary(t => t.Account.ToLower(), t => t.UserId); } diff --git a/FCL/FineUIPro.Web/ssocallback.aspx.cs b/FCL/FineUIPro.Web/ssocallback.aspx.cs index c81ac9a..2e92b2e 100644 --- a/FCL/FineUIPro.Web/ssocallback.aspx.cs +++ b/FCL/FineUIPro.Web/ssocallback.aspx.cs @@ -16,20 +16,24 @@ namespace FineUIPro.Web protected void Page_Load(object sender, EventArgs e) { this.code = Request.Params["code"]; - if (string.IsNullOrEmpty(this.code)) + BLL.ErrLogInfo.WriteLog($"获取code={this.code}"); + if (!IsPostBack) { - Response.Redirect("~/login.aspx"); - return; - } - var token= GetAccessToken(this.code); - var userInfo = getUserInfo(token); - if (userInfo == null) - { - Response.Redirect("~/login.aspx"); - return; - } + if (string.IsNullOrEmpty(this.code)) + { + Response.Redirect("~/login.aspx"); + return; + } + var token = GetAccessToken(this.code); + var userInfo = getUserInfo(token); + if (userInfo == null) + { + Response.Redirect("~/login.aspx"); + return; + } - Response.Redirect("~/index.aspx"); + Response.Redirect("~/index.aspx"); + } } private AccessTokenModel GetAccessToken(string _code) @@ -39,18 +43,18 @@ namespace FineUIPro.Web string grant_type = "authorization_code"; string redirect_url = "http://localhost:6166/ssocallback.aspx"; string scope = "profile openid"; - string baseUrl = $" https://login.microsoftonline.com/ecaa386b-c8df-4ce0-ad01740cbdb5ba55/oauth2/v2.0/token"; + string baseUrl = $"https://login.microsoftonline.com/ecaa386b-c8df-4ce0-ad01740cbdb5ba55/oauth2/v2.0/token"; try { string postData = $"code={code}&client_id={clientId}&client_secret={clientSecret}&grant_type={grant_type}&redirect_uri={redirect_url}&scope={scope}"; - string result = BLL.Common.HttpHelper.HttpPostRequest(baseUrl, postData, string.Empty); + BLL.ErrLogInfo.WriteLog($"参数url={postData}"); + BLL.ErrLogInfo.WriteLog($"===================================="); + BLL.ErrLogInfo.WriteLog($"结果Result={result}"); var Data = JsonConvert.DeserializeObject(result); - return Data; - } catch (Exception ex) { @@ -67,13 +71,11 @@ namespace FineUIPro.Web try { var result = HttpHelper.HttpGetRequest(baseUrl, token.access_token); - if (result.IndexOf("sub") > -1) { var info = JsonConvert.DeserializeObject(result); //写入session信息 - //写入cookie信息 - + Session["ossInfo"] = info; return info; } From ab9ea7b2e948b68942cc4e55ad54255c9e2c3173 Mon Sep 17 00:00:00 2001 From: jackchenyang <874821510@qq.com> Date: Tue, 11 Jun 2024 11:36:07 +0800 Subject: [PATCH 2/3] 121 --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7f160fb..270fe5b 100644 --- a/.gitignore +++ b/.gitignore @@ -1195,3 +1195,4 @@ FCL/WebApi/obj/Release/WebApi.pdb /FCL/FineUIPro.Web/File/Excel/20240515031710 /FCL/FineUIPro.Web/File/Excel/20240515031759 /FCL/WebApi/obj/Debug +/FCL/packages From 7868671ddb448490db1423fa8b52c00575a8490c Mon Sep 17 00:00:00 2001 From: jackchenyang <874821510@qq.com> Date: Tue, 11 Jun 2024 11:36:17 +0800 Subject: [PATCH 3/3] 1221 --- FCL/BLL/Common/HttpHelper.cs | 16 +- FCL/FineUIPro.Web/FineUIPro.Web.csproj | 44 + FCL/FineUIPro.Web/FineUIPro.Web.csproj.user | 2 +- FCL/FineUIPro.Web/Login.aspx | 4 +- FCL/FineUIPro.Web/packages.config | 14 + FCL/FineUIPro.Web/ssocallback.aspx.cs | 57 +- FCL/WebApi/WebApi.csproj.user | 2 +- .../PackFile/BaseInfo/FileType.aspx | 98 -- .../Evaluation/ContractorEvaluation.aspx | 120 --- .../Evaluation/ContractorEvaluationEdit.aspx | 305 ------ .../File/Excel/Contractor_Qualification.xlsx | Bin 9095 -> 0 bytes .../File/Excel/Performance Report_CN.xlsx | Bin 83858 -> 0 bytes .../File/Excel/Performance Report_EN.xlsx | Bin 83716 -> 0 bytes .../PackFile/File/Excel/Punishment.xlsx | Bin 37598 -> 0 bytes .../File/Excel/承包商评估表.xlsx | Bin 17705 -> 0 bytes .../PackFile/SES/CSafePunish.aspx | 181 ---- .../PackFile/SES/CSafePunishEdit.aspx | 144 --- .../PackFile/SES/ContractorQualification.aspx | 888 ------------------ .../SES/ContractorQualificationEdit.aspx | 76 -- .../PackFile/SES/ContractorQueCopy.aspx | 36 - .../PackFile/bin/App_GlobalResources.compiled | 2 - .../PackFile/bin/App_global.asax.compiled | 6 - FCLPackFile_2024.05.24/PackFile/bin/BLL.dll | Bin 199168 -> 0 bytes .../PackFile/bin/FineUIPro.Web.dll | Bin 1253376 -> 0 bytes FCLPackFile_2024.05.24/PackFile/bin/Model.dll | Bin 325632 -> 0 bytes FCLPackFile_2024.05.24/PackFile/bin/UI.dll | Bin 8704 -> 0 bytes .../版本日志/FCLDB_2024.05.16.sql | 44 - 27 files changed, 103 insertions(+), 1936 deletions(-) delete mode 100644 FCLPackFile_2024.05.24/PackFile/BaseInfo/FileType.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluation.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluationEdit.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/File/Excel/Contractor_Qualification.xlsx delete mode 100644 FCLPackFile_2024.05.24/PackFile/File/Excel/Performance Report_CN.xlsx delete mode 100644 FCLPackFile_2024.05.24/PackFile/File/Excel/Performance Report_EN.xlsx delete mode 100644 FCLPackFile_2024.05.24/PackFile/File/Excel/Punishment.xlsx delete mode 100644 FCLPackFile_2024.05.24/PackFile/File/Excel/承包商评估表.xlsx delete mode 100644 FCLPackFile_2024.05.24/PackFile/SES/CSafePunish.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/SES/CSafePunishEdit.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/SES/ContractorQualification.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/SES/ContractorQualificationEdit.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/SES/ContractorQueCopy.aspx delete mode 100644 FCLPackFile_2024.05.24/PackFile/bin/App_GlobalResources.compiled delete mode 100644 FCLPackFile_2024.05.24/PackFile/bin/App_global.asax.compiled delete mode 100644 FCLPackFile_2024.05.24/PackFile/bin/BLL.dll delete mode 100644 FCLPackFile_2024.05.24/PackFile/bin/FineUIPro.Web.dll delete mode 100644 FCLPackFile_2024.05.24/PackFile/bin/Model.dll delete mode 100644 FCLPackFile_2024.05.24/PackFile/bin/UI.dll delete mode 100644 FCLPackFile_2024.05.24/版本日志/FCLDB_2024.05.16.sql diff --git a/FCL/BLL/Common/HttpHelper.cs b/FCL/BLL/Common/HttpHelper.cs index a5c2e97..3d1d014 100644 --- a/FCL/BLL/Common/HttpHelper.cs +++ b/FCL/BLL/Common/HttpHelper.cs @@ -116,7 +116,7 @@ namespace BLL.Common const string post = "POST"; if (string.Equals(requestType, get, StringComparison.OrdinalIgnoreCase)) { - request = CreateGetHttpWebRequest(url); + request = CreateGetHttpWebRequest(url,token); } if (string.Equals(requestType, post, StringComparison.OrdinalIgnoreCase)) { @@ -125,12 +125,22 @@ namespace BLL.Common return request; } - private static HttpWebRequest CreateGetHttpWebRequest(string url) + private static HttpWebRequest CreateGetHttpWebRequest(string url,string token) { + var getRequest = HttpWebRequest.Create(url) as HttpWebRequest; + if (!string.IsNullOrEmpty(token)) + { + getRequest.ContentType = "application/json"; + getRequest.Headers.Add("token", token); + } + else + { + getRequest.ContentType = "text/html;charset=UTF-8"; + } getRequest.Method = "GET"; getRequest.Timeout = 5000; - getRequest.ContentType = "text/html;charset=UTF-8"; + getRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; return getRequest; } diff --git a/FCL/FineUIPro.Web/FineUIPro.Web.csproj b/FCL/FineUIPro.Web/FineUIPro.Web.csproj index db8bcfe..ebfc00e 100644 --- a/FCL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/FCL/FineUIPro.Web/FineUIPro.Web.csproj @@ -62,7 +62,22 @@ ..\packages\SharpZipLib.1.3.2\lib\net45\ICSharpCode.SharpZipLib.dll + + ..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll + + + ..\packages\Microsoft.IdentityModel.Abstractions.7.6.0\lib\net461\Microsoft.IdentityModel.Abstractions.dll + + + ..\packages\Microsoft.IdentityModel.JsonWebTokens.7.6.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll + + + ..\packages\Microsoft.IdentityModel.Logging.7.6.0\lib\net461\Microsoft.IdentityModel.Logging.dll + + + ..\packages\Microsoft.IdentityModel.Tokens.7.6.0\lib\net461\Microsoft.IdentityModel.Tokens.dll + ..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1484.0\lib\net40\Microsoft.ReportViewer.Common.dll @@ -103,14 +118,43 @@ ..\packages\NPOI.2.5.5\lib\net45\NPOI.OpenXmlFormats.dll + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + ..\packages\System.IdentityModel.Tokens.Jwt.7.6.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll + + + ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll + + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Text.Encodings.Web.4.7.2\lib\net461\System.Text.Encodings.Web.dll + + + ..\packages\System.Text.Json.4.7.2\lib\net461\System.Text.Json.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll + + + ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll + diff --git a/FCL/FineUIPro.Web/FineUIPro.Web.csproj.user b/FCL/FineUIPro.Web/FineUIPro.Web.csproj.user index c498d8f..c048173 100644 --- a/FCL/FineUIPro.Web/FineUIPro.Web.csproj.user +++ b/FCL/FineUIPro.Web/FineUIPro.Web.csproj.user @@ -2,7 +2,7 @@ ProjectFiles - Release|Any CPU + Debug|Any CPU true diff --git a/FCL/FineUIPro.Web/Login.aspx b/FCL/FineUIPro.Web/Login.aspx index ec50e3a..724d7fc 100644 --- a/FCL/FineUIPro.Web/Login.aspx +++ b/FCL/FineUIPro.Web/Login.aspx @@ -225,9 +225,9 @@ }) $("#faskloginUrl").click(function () { let clientId = "9379ad91-eef9-4956-a1ee-8b04bb3d42c8"; - let url = "https://login.microsoftonline.com/" + clientId + "/oauth2/v2.0/authorize"; + let url = "https://login.microsoftonline.com/ecaa386b-c8df-4ce0-ad01-740cbdb5ba55/oauth2/v2.0/authorize"; let response_type = "code"; - let redirect_url = encodeURIComponent("http://localhost:6166/ssocallback.aspx"); + let redirect_url = encodeURIComponent("https://fcl-test.basf-ypc.net.cn/ssocallback.aspx"); let scope = "openid profile"; let response_mode = "query"; let state = "state123"; diff --git a/FCL/FineUIPro.Web/packages.config b/FCL/FineUIPro.Web/packages.config index 397ea48..bc90019 100644 --- a/FCL/FineUIPro.Web/packages.config +++ b/FCL/FineUIPro.Web/packages.config @@ -1,9 +1,23 @@  + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FCL/FineUIPro.Web/ssocallback.aspx.cs b/FCL/FineUIPro.Web/ssocallback.aspx.cs index f8aa4cf..a7c3270 100644 --- a/FCL/FineUIPro.Web/ssocallback.aspx.cs +++ b/FCL/FineUIPro.Web/ssocallback.aspx.cs @@ -3,6 +3,7 @@ using BLL.Common; using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Web; using System.Web.UI; @@ -22,14 +23,14 @@ namespace FineUIPro.Web Response.Redirect("~/login.aspx"); return; } - var token= GetAccessToken(this.code); + var token = GetAccessToken(this.code); var userInfo = getUserInfo(token); if (userInfo == null) { Response.Redirect("~/login.aspx"); return; } - + Response.Redirect("~/index.aspx"); } @@ -40,7 +41,7 @@ namespace FineUIPro.Web string grant_type = "authorization_code"; string redirect_url = "https://fcl-test.basf-ypc.net.cn/ssocallback.aspx"; string scope = "profile openid"; - string baseUrl = $"https://login.microsoftonline.com/{clientId}/oauth2/v2.0/token"; + string baseUrl = $"https://login.microsoftonline.com/ecaa386b-c8df-4ce0-ad01-740cbdb5ba55/oauth2/v2.0/token"; try { @@ -62,23 +63,35 @@ namespace FineUIPro.Web } - private UserTokenModel getUserInfo(AccessTokenModel token) + private Model.Sys_User getUserInfo(AccessTokenModel token) { - string baseUrl = "https://graph.microsoft.com/oidc/userinfo"; + try { - var result = HttpHelper.HttpGetRequest(baseUrl, token.access_token); - BLL.ErrLogInfo.WriteLog($"获取用户信息:{result}"); - if (result.IndexOf("sub") > -1) + var handler = new JwtSecurityTokenHandler(); + var jwtToken = handler.ReadJwtToken(token.id_token); + string username = string.Empty; + var result = jwtToken.Claims.Where(t => t.Type == "cn").FirstOrDefault(); + if (result != null) { - var info = JsonConvert.DeserializeObject(result); - //写入session信息 - - //写入cookie信息 - - return info; + BLL.ErrLogInfo.WriteLog("cn="+result?.Value); + username = result?.Value; } - + else{ + username = jwtToken.Claims.Where(t => t.Type == "preferred_username").FirstOrDefault()?.Value; + BLL.ErrLogInfo.WriteLog("username=" + username); + if (!string.IsNullOrEmpty(username)) + { + username = username.Split('@')[0]; + } + } + var info = Funs.DB.Sys_User.Where(t => t.Account == username && t.IsPost == true).FirstOrDefault(); + if (info != null) + { + Session[SessionName.CurrUser] = info; + } + + return info; } catch (Exception ex) { @@ -90,18 +103,4 @@ namespace FineUIPro.Web } - public class UserTokenModel - { - public string sub { get; set; } - - public string name { get; set; } - - public string family_name { get; set; } - - public string given_name { get; set; } - - public string picture { get; set; } - public string email { get; set; } - - } } \ No newline at end of file diff --git a/FCL/WebApi/WebApi.csproj.user b/FCL/WebApi/WebApi.csproj.user index 643f3e5..ca0d73e 100644 --- a/FCL/WebApi/WebApi.csproj.user +++ b/FCL/WebApi/WebApi.csproj.user @@ -8,7 +8,7 @@ - Release|Any CPU + Debug|Any CPU diff --git a/FCLPackFile_2024.05.24/PackFile/BaseInfo/FileType.aspx b/FCLPackFile_2024.05.24/PackFile/BaseInfo/FileType.aspx deleted file mode 100644 index a47cf9e..0000000 --- a/FCLPackFile_2024.05.24/PackFile/BaseInfo/FileType.aspx +++ /dev/null @@ -1,98 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileType.aspx.cs" Inherits="FineUIPro.Web.BaseInfo.FileType" %> - - - - - - - 文件类型 - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluation.aspx b/FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluation.aspx deleted file mode 100644 index 8a064c5..0000000 --- a/FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluation.aspx +++ /dev/null @@ -1,120 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ContractorEvaluation.aspx.cs" Inherits="FineUIPro.Web.Evaluation.ContractorEvaluation" %> - - - - - - Frame Contractor Evaluation Form - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- - --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluationEdit.aspx b/FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluationEdit.aspx deleted file mode 100644 index b1dcf29..0000000 --- a/FCLPackFile_2024.05.24/PackFile/Evaluation/ContractorEvaluationEdit.aspx +++ /dev/null @@ -1,305 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ContractorEvaluationEdit.aspx.cs" Inherits="FineUIPro.Web.Evaluation.ContractorEvaluationEdit" %> - - - - - 项目经理编辑器 - - <%----%> - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- - - - - - - - - - - - - - - - - - - - - - --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FCLPackFile_2024.05.24/PackFile/File/Excel/Contractor_Qualification.xlsx b/FCLPackFile_2024.05.24/PackFile/File/Excel/Contractor_Qualification.xlsx deleted file mode 100644 index d83e26e7b885bcf871350a784b7e0ebc0cf17e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9095 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 diff --git a/FCLPackFile_2024.05.24/PackFile/File/Excel/Performance Report_CN.xlsx b/FCLPackFile_2024.05.24/PackFile/File/Excel/Performance Report_CN.xlsx deleted file mode 100644 index aa703867368a4f2f19411638d57d64e26510a6b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83858 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