using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.IO;
using System.Web.Security;
using System.Security.Cryptography;
using System.Web.Caching;
using Newtonsoft.Json;
using CN100.Member.IBLL.Modules;
using CN100.EnterprisePlatform.Wcf.Core;
using CN100.Member.IBLL;
using CN100.EnterprisePlatform.Wcf.Core.Config;
using CN100.ViewModel.Public;
using CN100.Member.Enums;
namespace CN100.Member.Permission
{
/// <summary>
///
/// </summary>
public class CurrentUser
{
private static string CookieName = "_Customer_Cn100_COM";
private static string MenuSessionName = "_SubAccountMenuUrls";
private static string LoginTimeCookie = "_Cn100_LoginTimeCookie";
const string cartCookieName = "_mCartCacheName";
const string messageCookieName = "_mMessageCookieName";
const string PassWordFile = "Key.ini";
const string cacheId = "cachePassword";
/// <summary>
///
/// </summary>
public const string filePassword = "Cn100cOM";
const string defualtPassword = "Cn100.Co";
const string appLoginName = "LoginPassWord";
const string UserDataExpireMinutes = "UserDataExpireMinutes";
/// <summary>
///登陆过期时间
/// </summary>
private static int ExpireMinutes
{
get
{
string strMin = System.Web.Configuration.WebConfigurationManager.AppSettings[UserDataExpireMinutes];
if (!string.IsNullOrEmpty(strMin))
{
int min = 0;
if (int.TryParse(strMin, out min))
{
return min;
}
}
return 30;
}
}
/// <summary>
///
/// </summary>
protected static string configPassword = GetRSAPassWord();
private static string GetRSAPassWord()
{
try
{
string strPwd = RSADecryption(System.Web.Configuration.WebConfigurationManager.AppSettings[appLoginName].ToString());
return strPwd;
}
catch (Exception ex)
{
Log.WriteLog(ex);
}
return "";
}
private static string GetPassWord()
{
string strPath = HttpContext.Current.Request.PhysicalApplicationPath + "/" + PassWordFile;
object objPassword = WebCache.GetFromWebCache(cacheId);
string strPassWord = "";
if (objPassword != null)
{
strPassWord = objPassword.ToString();
}
else
{
if (File.Exists(strPath))
{
FileStream stream = new FileStream(strPath, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(stream);
strPassWord = reader.ReadToEnd();
strPassWord = DecryptDES(strPassWord, filePassword);
stream.Close();
reader.Close();
//写入缓存
CacheDependency cacheDepen = new CacheDependency(strPath);
WebCache.WriteData(cacheId, cacheDepen, strPassWord);
}
else
{
FileStream stream = new FileStream(strPath, FileMode.CreateNew, FileAccess.Write);
strPassWord = EncryptDES(defualtPassword, filePassword);
byte[] btPass = Encoding.UTF8.GetBytes(strPassWord);
stream.Write(btPass, 0, btPass.Length);
stream.Close();
strPassWord = defualtPassword;
}
}
return strPassWord;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public bool isLogin()
{
lock (@Lock)
{
var cookie = CookieExt.GetCookie(CookieName);
if (cookie != null)
{
DateTime loginTime = GetLoginTime();
//延长cookie时间
// ExtendCookieTime(UserData);
if (loginTime.AddMinutes(ExpireMinutes) < DateTime.Now)
{
LogOut();
return false;
}
else
{
//延长登陆时间
ExtendCookieTime();
}
string UserData = CookieExt.GetCookieValueByName(CookieName);
if (!string.IsNullOrEmpty(UserData))
{
try
{
string decryptString = DecryptDES(UserData, configPassword);
var result = (LoginResult)JsonConvert.DeserializeObject(decryptString, typeof(LoginResult));
return true;
}
catch (Exception ex)
{
Log.WriteLog(ex);
}
}
}
return false;
}
}
/// <summary>
/// 是否登陆
/// </summary>
/// <returns></returns>
public static bool IsLogin()
{
CurrentUser user = new CurrentUser();
return user.isLogin();
//return HttpContext.Current.User.Identity.IsAuthenticated;
}
/// <summary>
/// 登出
/// </summary>
/// <returns></returns>
public static bool LogOut()
{
try
{
//System.Web.Security.FormsAuthentication.SignOut();
CookieExt.ClearCookie(CookieName);
CookieExt.ClearCookie(messageCookieName);
CookieExt.ClearCookie(cartCookieName);
//清除登陆时间
CookieExt.ClearCookie(LoginTimeCookie);
HttpContext.Current.Session.Remove(LoginTimeCookie);
//提现密码
CookieExt.ClearCookie("_CN100_DRACA_");
//提现错误次数
CookieExt.ClearCookie("_CN100_DRACOUNT_");
//移除子帐号菜单权限
if (HttpContext.Current.Session[MenuSessionName] != null)
{
HttpContext.Current.Session.Remove(MenuSessionName);
}
return true;
}
catch
{
return false;
}
}
/// <summary>
///
/// </summary>
public static object @Lock = new object();
/// <summary>
/// 获取当前用户信息
/// </summary>
public static LoginResult UserInfo
{
get
{
CurrentUser user = new CurrentUser();
return user.GetUserInfo();
}
}
/// <summary>
/// 获取用户信息
/// </summary>
/// <returns></returns>
public LoginResult GetUserInfo()
{
lock (@Lock)
{
LoginResult result = new LoginResult();
if (IsLogin())
{
string UserData = CookieExt.GetCookieValueByName(CookieName);
if (!string.IsNullOrEmpty(UserData))
{
try
{
string decryptString = DecryptDES(UserData, configPassword);
result = (LoginResult)JsonConvert.DeserializeObject(decryptString, typeof(LoginResult));
DateTime loginTime = GetLoginTime();
//延长cookie时间
// ExtendCookieTime(UserData);
if (loginTime.AddMinutes(ExpireMinutes) < DateTime.Now)
{
LogOutToLoginPage();
return new LoginResult();
}
else
{
//延长登陆时间
ExtendCookieTime();
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
RedirectToLoginPage();
}
}
}
return result;
}
}
/// <summary>
/// 延长用户cookie时间
/// </summary>
public static void ExtendCookieTime()
{
//try
//{
// if (HttpContext.Current.Session[LoginTimeCookie] != null)
// {
// DateTime time = Convert.ToDateTime(HttpContext.Current.Session[LoginTimeCookie]);
// if (time.AddMinutes(1) < DateTime.Now)
// {
// HttpContext.Current.Session[LoginTimeCookie] = DateTime.Now;
// CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
// }
// }
// else
// {
// HttpContext.Current.Session[LoginTimeCookie] = DateTime.Now;
// CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
// }
//}
//catch (Exception ex)
//{
// Log.WriteLog(ex);
// CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
//}
CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
}
/// <summary>
/// 获取上次登陆时间
/// </summary>
/// <returns></returns>
private static DateTime GetLoginTime()
{
if (CookieExt.GetCookie(LoginTimeCookie) != null)
{
DateTime loginTime = DateTime.Now;
if (DateTime.TryParse(CookieExt.GetCookieValueByName(LoginTimeCookie), out loginTime))
{
return loginTime;
}
}
return DateTime.Now;
}
/// <summary>
/// 登出返回登陆页面
/// </summary>
public static void LogOutToLoginPage()
{
//System.Web.Security.FormsAuthentication.SignOut();
LogOut();
string url = GetReturnUrl();
HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + url);
}
/// <summary>
/// 登出并跳转到默认页面
/// </summary>
public static void LogOutToDefaultPage()
{
LogOut();
HttpContext.Current.Response.Redirect(FormsAuthentication.DefaultUrl);
}
/// <summary>
/// 转到登陆页面
/// </summary>
public static void RedirectToLoginPage()
{
string url = GetReturnUrl();
HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + url);
}
/// <summary>
/// 转到默认页面
/// </summary>
public static void RedirectToDefaultPage()
{
HttpContext.Current.Response.Redirect(FormsAuthentication.DefaultUrl);
}
/// <summary>
/// 用户名,如果是子帐号登陆,用父帐户名
/// </summary>
public static string UserName
{
get
{
if (IsLogin())
{
//return HttpContext.Current.User.Identity.Name;
return UserInfo.UserName;
}
return null;
}
}
/// <summary>
/// 保存用户信息到cookie
/// </summary>
/// <param name="result"></param>
public static void SaveUserCookie(LoginResult result)
{
//string userData = JsonConvert.SerializeObject(result);
//FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
// result.UserName,
// DateTime.Now,
// DateTime.Now.AddMinutes(30), // value of time out property
// true, // Value of IsPersistent property
// userData,
// FormsAuthentication.FormsCookiePath);
//string encryptedTicket = FormsAuthentication.Encrypt(ticket);
//HttpCookie authCookie = new HttpCookie(CookieName, encryptedTicket);
//HttpCookie authCookie = new HttpCookie(CookieName, encryptedTicket);
//authCookie.Domain = FormsAuthentication.CookieDomain;
//authCookie.Path = FormsAuthentication.FormsCookiePath;
//authCookie.Expires = DateTime.Now.AddMinutes(30);
//HttpCookie authCookie = new HttpCookie(CookieName, encryptedTicket);
//authCookie.Domain = FormsAuthentication.CookieDomain;
//authCookie.Path = FormsAuthentication.FormsCookiePath;
//authCookie.Expires = DateTime.Now.AddMinutes(30);
//if (HttpContext.Current.Request.Cookies[CookieName] != null)
//{
// HttpContext.Current.Response.Cookies.Set(authCookie);
//}
//else
//{
// HttpContext.Current.Response.Cookies.Add(authCookie);
//}
result.LoginTime = DateTime.Now;
string encryptedTicket = DeserializeUserData(result);
CookieExt.SetCookie(CookieName, encryptedTicket); //, DateTime.Now.AddMinutes(ExpireMinutes)
//清除购物与信息缓存
CookieExt.ClearCookie(cartCookieName);
CookieExt.ClearCookie(messageCookieName);
//保存登陆时间
ExtendCookieTime();
//移除子帐号菜单权限
if (HttpContext.Current.Session[MenuSessionName] != null)
{
HttpContext.Current.Session.Remove(MenuSessionName);
}
}
/// <summary>
/// 序列化用户信息
/// </summary>
/// <param name="result"></param>
/// <returns></returns>
public static string DeserializeUserData(LoginResult result)
{
string userData = JsonConvert.SerializeObject(result);
string encryptedTicket = EncryptDES(userData, configPassword);
return encryptedTicket;
}
/// <summary>
/// 获取当前用户信息
/// </summary>
/// <returns></returns>
public static LoginResult GetCurrentUserInfo()
{
lock (@Lock)
{
CurrentUser user = new CurrentUser();
return user.GetUserInfo();
}
}
/// <summary>
/// 获取
/// </summary>
/// <returns></returns>
public static string GetReturnUrl()
{
string hosts = HttpContext.Current.Request.Headers["host"];
if (string.IsNullOrEmpty(hosts))
{
hosts = HttpContext.Current.Request.Url.Host;
}
string pageUrl = HttpContext.Current.Request.Url.PathAndQuery;
return HttpUtility.UrlEncode("http://" + hosts + pageUrl);
}
/// <summary>
/// 根据用户,判断是否具有菜单ID权限
/// </summary>
/// <param name="menuID"></param>
/// <param name="subAccountID"></param>
/// <returns></returns>
public static bool HasMenuIDBySubAccountID(long menuID, long subAccountID)
{
try
{
using (WcfTcpClient<IMemberUsers> client = WcfClients.Member.CreateClient<IMemberUsers>())
{
return client.Channel.HasMenuIDBySubAccountID(subAccountID, menuID);
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
return false;
}
}
/// <summary>
/// 当前用户是否具有菜单权限
/// </summary>
/// <param name="menuID">菜单ID</param>
/// <returns></returns>
public static bool HasMenuID(long menuID)
{
if (UserInfo == null) return false;
return HasMenuIDBySubAccountID(menuID, UserInfo.SubAccountID);
}
/// <summary>
/// 根据用户名,获取有权限的菜单ID
/// </summary>
/// <param name="subAccountID">子帐号ID</param>
/// <returns></returns>
public static long[] GetMenuIDesBySubAccountID(long subAccountID)
{
try
{
using (WcfTcpClient<IMemberUsers> client = WcfClients.Member.CreateClient<IMemberUsers>())
{
return client.Channel.GetMenuIDesBySubAccountID(subAccountID);
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
return new long[] { };
}
}
/// <summary>
/// 获取当前用户有权限菜单ID
/// </summary>
/// <returns></returns>
public static long[] GetMenuIDes()
{
if (UserInfo == null) return new long[] { };
return GetMenuIDesBySubAccountID(UserInfo.SubAccountID);
}
private static IList<StoreMenuInfo> GetSubAccountMenu(long subAccount)
{
try
{
using (WcfTcpClient<IMemberUsers> client = WcfClients.Member.CreateClient<IMemberUsers>())
{
IList<StoreMenuInfo> listMenu = client.Channel.GetStoreMenuBySubAccountID(subAccount);
string strCookie = JsonConvert.SerializeObject(listMenu);
//HttpContext.Current.Session.Add(MenuSessionName, listMenu);
return listMenu;
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
}
return new List<StoreMenuInfo>();
}
/// <summary>
/// 判断子帐号是否具有URL权限
/// </summary>
/// <param name="url"></param>
/// <param name="subAccount"></param>
/// <returns></returns>
public static bool HasMenuOfSubAccount(string url, long subAccount)
{
//IList<StoreMenuInfo> listMenu = new List<StoreMenuInfo>();
//if (HttpContext.Current.Session[MenuSessionName] != null)
//{
// listMenu = HttpContext.Current.Session[MenuSessionName] as List<StoreMenuInfo>;
// if (listMenu == null)
// {
// listMenu = GetSubAccountMenu(subAccount);
// }
//}
//else
//{
// listMenu = GetSubAccountMenu(subAccount);
//}
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@":\d+", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex IPreg = new System.Text.RegularExpressions.Regex(@"(\d{1,3}\.){3}\d{1,3}", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if (IPreg.IsMatch(url))
{
string hosts = HttpContext.Current.Request.Headers["host"];
if (string.IsNullOrEmpty(hosts))
{
hosts = HttpContext.Current.Request.Url.Host;
}
string pageUrl = HttpContext.Current.Request.Url.PathAndQuery;
url = "http://" + hosts + pageUrl;
}
else if (reg.IsMatch(url))
{
url = reg.Replace(url, "");
}
IList<StoreMenuInfo> listMenu = GetSubAccountMenu(subAccount);
if (listMenu.Count > 0)
{
var instance = CN100.EnterprisePlatform.Configuration.DomainSection.Instance;
foreach (var menu in listMenu)
{
if (!string.IsNullOrEmpty(menu.DomainName))
{
if (instance.Urls[menu.DomainName] != null)
{
string menuUrl = instance.Urls[menu.DomainName].Url + menu.Url;
if (menuUrl.ToLower() == url.ToLower())
{
return true;
}
}
}
}
}
Log.WriteLog(new Exception("子帐号来访地址:" + url.ToString()));
return false;
}
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static bool HasMenuOfSubAccount(string url)
{
if (CurrentUser.IsLogin())
{
long subAccountID = CurrentUser.UserInfo.SubAccountID;
if (subAccountID > 0)
{
return HasMenuOfSubAccount(url, subAccountID);
}
}
return false;
}
/// <summary>
///
/// </summary>
/// <param name="userName"></param>
/// <param name="userType"></param>
/// <returns></returns>
public static int GetMessageCountByUserName(string userName, UserType userType)
{
try
{
using (WcfTcpClient<IUserMessageService> client = WcfClients.Member.CreateClient<IUserMessageService>())
{
return client.Channel.GetUnReadMessageCount(userName, userType);
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
}
return 0;
}
/// <summary>
/// 获取未读信息
/// </summary>
/// <returns></returns>
public static int GetMessageCountByUserName()
{
if (IsLogin())
{
return GetMessageCountByUserName(UserName, GetCurrentUserInfo().UserType);
}
return 0;
}
/// <summary>
///
/// </summary>
/// <param name="UserID"></param>
/// <returns></returns>
public static IList<ShopCart> GetShopCartQtyByUserID(long UserID)
{
try
{
using (WcfTcpClient<IMemberUsers> client = WcfClients.Member.CreateClient<IMemberUsers>())
{
return client.Channel.GetShopCartQtyByUserID(UserID);
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
}
return new List<ShopCart>();
}
/// <summary>
/// 获取购物车数量
/// </summary>
/// <returns></returns>
public static IList<ShopCart> GetShopCartQtyByUserID()
{
if (IsLogin())
{
return GetShopCartQtyByUserID(UserInfo.UserBaseID);
}
return new List<ShopCart>();
}
/// <summary>
/// 申请店铺流程过程中直接录入地址时未满足条件url跳转
/// </summary>
public static void RedirectAlertPage()
{
//Response.Redirect(ConfigHelper.GetDomain("LoginURL") + "/AlertPage.aspx");
HttpContext.Current.Response.Redirect(ConfigHelper.GetDomain("LoginURL") + "AlertPage.aspx");
}
#region 加密解密
//默认密钥向量
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/**/
/**/
/**/
private static DESCryptoServiceProvider des = new DESCryptoServiceProvider();
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static string EncryptDES(string encryptString, string encryptKey)
{
try
{
//byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
//byte[] rgbIV = Keys;
//byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
//DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
//MemoryStream mStream = new MemoryStream();
//CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
//cStream.Write(inputByteArray, 0, inputByteArray.Length);
//cStream.FlushFinalBlock();
//return Convert.ToBase64String(mStream.ToArray());
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(encryptString);
des.Key = ASCIIEncoding.ASCII.GetBytes(encryptKey.Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(encryptKey.Substring(0, 8));
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
catch (Exception ex)
{
Log.WriteLog(ex);
return encryptString;
}
}
/**/
/**/
/**/
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string DecryptDES(string decryptString, string decryptKey)
{
try
{
//byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
//byte[] rgbIV = Keys;
//byte[] inputByteArray = Convert.FromBase64String(decryptString);
//DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
//MemoryStream mStream = new MemoryStream();
//CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
//cStream.Write(inputByteArray, 0, inputByteArray.Length);
//cStream.FlushFinalBlock();
//return Encoding.UTF8.GetString(mStream.ToArray());
byte[] inputByteArray = new byte[decryptString.Length / 2];
for (int x = 0; x < decryptString.Length / 2; x++)
{
int i = (Convert.ToInt32(decryptString.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(decryptKey.Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(decryptKey.Substring(0, 8));
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.UTF8.GetString(ms.ToArray());
}
catch (Exception ex)
{
Log.WriteLog(ex);
return decryptString;
}
}
/// <summary>
/// RSA 的密钥产生 产生私钥 和公钥
/// </summary>
/// <param name="xmlKeys"></param>
/// <param name="xmlPublicKey"></param>
public void RSAKey(out string xmlKeys, out string xmlPublicKey)
{
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
xmlKeys = rsa.ToXmlString(true);
xmlPublicKey = rsa.ToXmlString(false);
}
const string PUBLICKEY = "<RSAKeyValue><Modulus>1E1BqQ0uipllOGPMKB4YO/ZutHO0pfQz6jQKFs1y958Vm8YO77APoI65hFYZbFLer3MKx2Obp1Y0DyUyuNIes+IhS7I4nHBS4igdvhohUZDhLLphiuDZ3i5NkBQDVqex/UdTvLbzmVI29bThTEGyWzHYtrIjNqM+IJJnqOquXMs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
const string PRIVATEKEY = "<RSAKeyValue><Modulus>1E1BqQ0uipllOGPMKB4YO/ZutHO0pfQz6jQKFs1y958Vm8YO77APoI65hFYZbFLer3MKx2Obp1Y0DyUyuNIes+IhS7I4nHBS4igdvhohUZDhLLphiuDZ3i5NkBQDVqex/UdTvLbzmVI29bThTEGyWzHYtrIjNqM+IJJnqOquXMs=</Modulus><Exponent>AQAB</Exponent><P>8iXyePGppOkS1hnvMPC5FVfbSDMfSAPfsmXCX3LgoJYxt+n0p1Mm/ZyVnSHm8xJdObGznLRyrVZomuuk6DCyYw==</P><Q>4HI71hZ7VYSWT0ZTehNKvAlhxETWNQlD2YxRwvuHmcVI2+tN7m/RTLkspfXyKsd/opvcqnQeHv2m/LUtiUWEeQ==</Q><DP>UtLH7LY74DwYRUL5nTO5GqPCTR+vQ2KP0OUdZqhUTJkSyGUtWU4HuBcm1WgTJnDRkjpFxQOzdbZocRTIguKlIQ==</DP><DQ>0qJiBUiT9m23oi4dqTLxsAYd+lOfs6Y+RqupD5N+bpD3D2yEdn/5rEcb36Qw4HTZE4GyVUUj/3GMhRyC35CeAQ==</DQ><InverseQ>M1c29WqJO9ET8ymHaBq+Q5gRdpJ79jzV2RlydcMq0dCmHiHjeAwFilVj8AROjvuiOo71fUCleL9+leuOoKgUvg==</InverseQ><D>W14obQX0Ssf7rQoeOgHBskS7nkPRsj5n/VqKIQgoe3NmzFSv5u3hu9rQ8qhPZrQ/jEi5kdhHi/voicAblTkw5rcS7qfamv8NOLz6KV5HwUcyW0eAqL97w7LOJohw7S/3NGblftA76oHGpOpKpZf+u1g7e7w8xRS6RbZ3zqP6yzE=</D></RSAKeyValue>";
///
/// 加密
///
/// 待加密的字符串
///
[ThreadStatic]
private static RSACryptoServiceProvider rsa = null;
[ThreadStatic]
private static RSACryptoServiceProvider dersa = null;
/// <summary>
///
/// </summary>
/// <param name="word"></param>
/// <returns></returns>
public static string RSAEncryption(string word)
{
//CspParameters param = new CspParameters();
//param.KeyContainerName = PUBLICKEY;
if (rsa == null)
{
rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PUBLICKEY);
}
byte[] plaindata = System.Text.Encoding.Default.GetBytes(word);
byte[] encryptdata = rsa.Encrypt(plaindata, false);
string encryptstring = Convert.ToBase64String(encryptdata);
return encryptstring;
}
///
/// 解密,当密文不正确时,可能会抛出异常
///
/// 待解密的密文字符串
///
public static string RSADecryption(string encryptWord)
{
//CspParameters param = new CspParameters();
//param.KeyContainerName = PRIVATEKEY;
if (dersa == null)
{
rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PRIVATEKEY);
}
byte[] encryptdata = Convert.FromBase64String(encryptWord);
byte[] decryptdata = rsa.Decrypt(encryptdata, false);
string plaindata = System.Text.Encoding.Default.GetString(decryptdata);
return plaindata;
}
#endregion
}
/// <summary>
/// cookie操作
/// </summary>
public class CookieExt
{
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
/// <param name="expires"></param>
public static void SetCookie(string name, string value, DateTime? expires = null)
{
HttpContext.Current.Response.Cookies.Remove(name);
value = HttpUtility.UrlEncode(value);
HttpCookie cookie = new HttpCookie(name, value);
cookie.Domain = FormsAuthentication.CookieDomain;
cookie.Path = FormsAuthentication.FormsCookiePath;
if (expires != null)
{
cookie.Expires = expires.Value;
}
HttpContext.Current.Response.Cookies.Add(cookie);
//if (HttpContext.Current.Request.Cookies[name] != null)
//{
// HttpContext.Current.Response.Cookies.Set(cookie);
//}
//else
//{
// HttpContext.Current.Response.Cookies.Add(cookie);
//}
}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string GetCookieValueByName(string name)
{
string value = HttpContext.Current.Request.Cookies[name].Value;
value = HttpUtility.UrlDecode(value);
return value;
}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static HttpCookie GetCookie(string name)
{
return HttpContext.Current.Request.Cookies[name];
}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
public static void ClearCookie(string name)
{
//if (GetCookie(name) != null)
//{
// HttpCookie cookie = GetCookie(name);
// cookie.Expires = DateTime.Now.AddDays(-1);
// HttpContext.Current.Response.Cookies.Set(cookie);
//}
HttpCookie cookie = new HttpCookie(name);
cookie.Expires = DateTime.Now.AddDays(-1);
cookie.Path = "/";
cookie.Domain = FormsAuthentication.CookieDomain;
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
需要整理,我只是开发的原稿弄出来了!有很多没用的!
单点登陆
最新推荐文章于 2024-06-21 15:43:09 发布