You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using ICSSoft.ERPWMS.Entity; using Microsoft.IdentityModel.Protocols; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks;
namespace ICSSoft.ERPWMS.SQL { public class GetToken { /// <summary>
/// 返回值
/// </summary>
public string Get(ICSLogin infos) {
ICSLogin szJson = new ICSLogin(); DataTable dt = null; string json = ""; if (string.IsNullOrWhiteSpace(infos.LoginID)) { throw new Exception("传入参数为空!"); } if (string.IsNullOrWhiteSpace(infos.Secret)) { throw new Exception("密码为空!"); } string res = string.Empty;
try { string sql = string.Empty;
sql = @"SELECT StartTime,Time,Authkey from Cust_ICSLogin where LoginID='" + infos.LoginID + "' and Secret='" + infos.Secret + "'"; if (infos.Type=="ERP") { dt = ICSHelper.GetDataTableERP(sql); } else { dt = ICSHelper.GetDataTable(sql); } //json = JsonConvert.SerializeObject(dt);
if (dt.Rows.Count <= 0 || dt == null) throw new Exception("传入账号有误,请核对!"); else { if (!string.IsNullOrWhiteSpace(dt.Rows[0]["StartTime"].ToString())) { DateTime dtime = Convert.ToDateTime(dt.Rows[0]["StartTime"].ToString()); int Time = Convert.ToInt32(dt.Rows[0]["Time"].ToString());
if (DateTime.Now < dtime.AddMinutes(Time)) { json = dt.Rows[0]["Authkey"].ToString(); } else { string charset = "UTF-8"; string content = infos.LoginID + infos.Secret + DateTime.Now; string key = "ICS999"; json = DoSign(content, key, charset); if (!string.IsNullOrWhiteSpace(json)) { sql = @"UPDATE Cust_ICSLogin SET Authkey ='" + json + "',StartTime='" + DateTime.Now + "' WHERE LoginID='" + infos.LoginID + "' and Secret='" + infos.Secret + "'"; if (infos.Type == "ERP") { ICSHelper.ExecuteDateERP(sql);//修改包涵拓展(公共段19)
} else { ICSHelper.ExecuteDate(sql);//修改包涵拓展(公共段19)
} } }
} }
return json; } catch (Exception ex) {
throw new Exception(ex.Message); }
}
public bool Check(string Authkey,string Type) { bool isfalse = false; DataTable dt = new DataTable();
try { string IsOpenKey =ICSHelper.ReadConfig(ICSHelper.FileNameCompanyCon)["IsOpenKey"].ToString(); if (IsOpenKey=="true") { string sql = @"SELECT Time from Cust_ICSLogin WHERE Authkey='" + Authkey + "' "; if (Type== "ERP") { dt = ICSHelper.GetDataTableERP(sql); } else { dt = ICSHelper.GetDataTable(sql); } if (dt != null && dt.Rows.Count > 0) { string _Time = dt.Rows[0][0].ToString(); int ___Time = Int32.Parse(_Time); int a = 0; string sqlAsy = @"SELECT COUNT(*) from Cust_ICSLogin WHERE Authkey='" + Authkey + "' AND StartTime>'" + DateTime.Now.AddMinutes(-___Time) + "'"; if (Type == "ERP") { dt = ICSHelper.GetDataTableERP(sqlAsy); } else { dt = ICSHelper.GetDataTable(sqlAsy); } //json = JsonConvert.SerializeObject(dt);
if (dt.Rows.Count <= 0 || dt == null) throw new Exception("Authkey已失效,请重新获取!"); else { a = Int32.Parse(dt.Rows[0][0].ToString()); } if (a > 0) isfalse = true; } else { throw new Exception("Authkey已失效,请重新获取!"); } } else isfalse = true; return isfalse; } catch (Exception ex) {
throw new Exception(ex.Message); }
}
/// <summary>
/// 请求报文签名
/// </summary>
/// <param name="content">内容参数</param>
/// <param name="charset">编码格式</param>
/// <param name="key">key值</param>
/// <returns></returns>
public static string DoSign(string content, string key, string charset = "UTF-8") { string sign; content = content + key; //md5加密
MD5 md5 = new MD5CryptoServiceProvider(); byte[] b = md5.ComputeHash(Encoding.GetEncoding(charset).GetBytes(content)); //base64编码
sign = Convert.ToBase64String(b).Trim(); return sign; }
public class ICSLogin { public string Secret; public string LoginID; public string Type; } } }
|