This commit is contained in:
gaofei
2021-09-17 16:05:01 +08:00
8 changed files with 163 additions and 23 deletions
+33 -1
View File
@@ -1 +1,33 @@

错误信息开始=====>
错误类型:FormatException
错误信息:输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。
错误堆栈:
在 System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength)
在 System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
在 System.Convert.FromBase64String(String s)
在 System.Security.Cryptography.RSA.FromXmlString(String xmlString)
在 FineUIPro.Web.Login.RSADecrypt(String privatekey, String content) 位置 D:\CWCEC\SGGL_CWCEC\SGGL\FineUIPro.Web\Login.aspx.cs:行号 161
在 FineUIPro.Web.Login.Page_Load(Object sender, EventArgs e) 位置 D:\CWCEC\SGGL_CWCEC\SGGL\FineUIPro.Web\Login.aspx.cs:行号 74
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.EventHandler.Invoke(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
出错时间:09/17/2021 14:54:20
出错文件:http://localhost:8118/Login.aspx?data=****&database=userName=sysgly&timespan=1256015312
IP地址:::1
出错时间:09/17/2021 14:54:20
错误信息开始=====>
错误类型:FormatException
错误信息:该字符串未被识别为有效的 DateTime。
错误堆栈:
在 System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
在 System.DateTime.Parse(String s)
在 BLL.Funs.GetNewDateTime(String time) 位置 D:\CWCEC\SGGL_CWCEC\SGGL\BLL\Common\Funs.cs:行号 554
出错时间:09/17/2021 14:56:12
出错时间:09/17/2021 14:56:12
+78 -19
View File
@@ -4,6 +4,8 @@
using System;
using System.Configuration;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.Services;
@@ -65,6 +67,32 @@
{
if (!IsPostBack)
{
string userdata = Request.Params["basedata"];
if (!string.IsNullOrEmpty(userdata))
{
string result = RSADecrypt(Const.OAPrivateKey_CWCEC, userdata); //经过RSA解密后获得的域登录名+时间戳
if (!string.IsNullOrEmpty(result))
{
var value = Funs.GetStrListByStr(result, '|');
if (value.Count > 1)
{
var userValues = Funs.GetStrListByStr(value[0], '=');
var timespan = Funs.GetStrListByStr(value[1], '=');
if (userValues.Count > 1 && timespan.Count > 1)
{
DateTime? dateTimeS = Funs.IntToDateTime(Funs.GetNewIntOrZero(timespan[1]));
if (dateTimeS.HasValue && DateTime.Now.AddSeconds(-30) < dateTimeS)
{
if (LoginService.UserLogOn_OA(userValues[1], true, this.Page))
{
string url = getUrl();
Response.Redirect(url);
}
}
}
}
}
}
}
}
#endregion
@@ -80,28 +108,59 @@
string url = "";
if (LoginService.UserLogOn(user, pwd, true, this.Page))
{
this.CurrUser.RoleType = RoleService.GetRoleTypeByRoleId(this.CurrUser.RoleId);
if (!this.CurrUser.LastIsOffice.HasValue)
{
this.CurrUser.LastIsOffice = this.CurrUser.IsOffice;
}
if (this.CurrUser.LastIsOffice == true)
{
this.CurrUser.LoginProjectId = null;
////本部菜单
url = "index.aspx";
}
else
{
this.CurrUser.LoginProjectId = this.CurrUser.LastProjectId;
//// 项目菜单
url = "indexProject.aspx?projectId=" + this.CurrUser.LastProjectId;
}
LogService.AddSys_Log(this.CurrUser, this.CurrUser.UserName, this.CurrUser.UserId, Const.UserMenuId, Const.BtnLogin);
url = getUrl();
}
return url;
}
/// <summary>
/// 获取跳转页面
/// </summary>
/// <returns></returns>
private string getUrl()
{
string url = "";
this.CurrUser.RoleType = RoleService.GetRoleTypeByRoleId(this.CurrUser.RoleId);
if (!this.CurrUser.LastIsOffice.HasValue)
{
this.CurrUser.LastIsOffice = this.CurrUser.IsOffice;
}
if (this.CurrUser.LastIsOffice == true)
{
this.CurrUser.LoginProjectId = null;
////本部菜单
url = "index.aspx";
}
else
{
this.CurrUser.LoginProjectId = this.CurrUser.LastProjectId;
//// 项目菜单
url = "indexProject.aspx?projectId=" + this.CurrUser.LastProjectId;
}
LogService.AddSys_Log(this.CurrUser, this.CurrUser.UserName, this.CurrUser.UserId, Const.UserMenuId, Const.BtnLogin);
return url;
}
/// <summary>
/// <summary>
/// 用私钥对数据进行RSA解密
/// </summary>
/// <param name="privatekey"></param>
/// <param name="content"></param>
/// <returns></returns>
public static string RSADecrypt(string privatekey, string content)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(privatekey);
//对参数content进行两次base64解密
cipherbytes = rsa.Decrypt(Convert.FromBase64String(Encoding.UTF8.GetString(Convert.FromBase64String(content))), false);
return Encoding.UTF8.GetString(cipherbytes);
}
}
}