后台cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Management;
namespace WebApplication2
{
public partial class WebForm3 : System.Web.UI.Page
{
/// <summary>
/// pageLoad事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
//自动登录
if (!IsPostBack)
{
if (!String.IsNullOrEmpty(CookieUtil.ReadCookies("eBooking_SGUserInfo")))
{ //自动登录
UserLogin("", "");
}
else
{
//普通登录
}
}
}
/// <summary>
/// 登录方法
/// </summary>
/// <param name="strLoginName"></param>
/// <param name="strPASSWORD"></param>
private void UserLogin(string strLoginName, string strPASSWORD)
{
UserInfoResponse userEntity = null;//创建的实体
if (!String.IsNullOrEmpty(CookieUtil.ReadCookies("eBooking_SGUserInfo")))
{
string decryCookie = DESEncrypt.DecryptDES(CookieUtil.ReadCookies("eBooking_SGUserInfo"),ConfigurationManager.AppSettings["DesKey"].ToString());
string[] cookieValue = decryCookie.Split('|');
if (cookieValue.Length > 0)
{
if (cookieValue[1] == GetNetCardMacAddress())
{
userEntity = null;//这里根据cookieValue[0](用户名)去数据库查询用户相关信息
}
}
}
else
{
userEntity = null;//这里是普通登录
}
if (true)//这里判断自动登录按钮是否选中
{
string cookieValue = GetUserLoginCookieValue();//得到cookie
//写cookie
CookieUtil.WriteCookies("eBooking_SGUserInfo", cookieValue, 7,CookieUtil.TimeUnit.Day);
}
}
#region 得到用户Cookie Value
/// <summary>
/// 得到用户Cookie value
/// </summary>
/// <returns></returns>
private string GetUserLoginCookieValue()
{
string cookieValue = "";
string UserCode = "";//用户名的Code
cookieValue =UserCode + "|" + GetNetCardMacAddress();//用户名和mac地址
//加密
string EncryCookieValue = DESEncrypt.EncryptDES(cookieValue, ConfigurationManager.AppSettings["DesKey"]);
return EncryCookieValue;
}
#endregion
#region 获取MAC地址
/// <summary>
/// 获取MAC地址
/// </summary>
/// <returns></returns>
public string GetNetCardMacAddress()
{
ManagementClass mc;//注意引用System.Management和System.Management.Instrumentation
ManagementObjectCollection moc;
mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
moc = mc.GetInstances();
string str = "";
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
str = mo["MacAddress"].ToString();
}
return str;
}
#endregion
}
}
要用到的两个类
CookieUtil.cs
cookie类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication2
{
public class CookieUtil
{
/// <summary>
/// 写Cookies
/// </summary>
/// <param name="indexValue">Cookie名</param>
/// <param name="textValue">Cookie值</param>
/// <param name="expries">过期时间</param>
/// <param name="times">时间单位枚举</param>
public static void WriteCookies(string indexValue, string textValue, int expries, TimeUnit times)
{
if (HttpContext.Current.Response.Cookies[indexValue] != null)
HttpContext.Current.Response.Cookies[indexValue].Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies[indexValue].Value = textValue;
DateTime dtNow = DateTime.Now;
switch (times)
{
case TimeUnit.Second:
dtNow = dtNow.AddSeconds(expries);
break;
case TimeUnit.Minute:
dtNow = dtNow.AddMinutes(expries);
break;
case TimeUnit.Hour:
dtNow = dtNow.AddHours(expries);
break;
case TimeUnit.Day:
dtNow = dtNow.AddDays(expries);
break;
case TimeUnit.Month:
dtNow = dtNow.AddMonths(expries);
break;
default:
dtNow = dtNow.AddYears(expries);
break;
}
HttpContext.Current.Response.Cookies[indexValue].Expires = dtNow;
}
/// <summary>
/// 读Cookies
/// </summary>
/// <param name="indexValue">Cookie名</param>
/// <returns>返回Cookie 值</returns>
public static string ReadCookies(string indexValue)
{
if (HttpContext.Current.Request.Cookies[indexValue] != null)
{
//Encoding stre = Encoding.GetEncoding("GB2312");
return HttpContext.Current.Request.Cookies[indexValue].Value.ToString();
}
return string.Empty;
}
/// <summary>
/// 删除Cookies,立即过期
/// </summary>
/// <param name="indexValue">Cookie名</param>
/// <param name="times">时间单位枚举</param>
public static void DeleteCookies(string indexValue, TimeUnit times)
{
if (HttpContext.Current.Request.Cookies[indexValue] != null)
{
HttpCookie cookies = HttpContext.Current.Request.Cookies[indexValue];
DateTime dtNow = DateTime.Now;
switch (times)
{
case TimeUnit.Second:
dtNow = dtNow.AddSeconds(-1);
break;
case TimeUnit.Minute:
dtNow = dtNow.AddMinutes(-1);
break;
case TimeUnit.Hour:
dtNow = dtNow.AddHours(-1);
break;
case TimeUnit.Day:
dtNow = dtNow.AddDays(-1);
break;
case TimeUnit.Month:
dtNow = dtNow.AddMonths(-1);
break;
default:
dtNow = dtNow.AddYears(-1);
break;
}
cookies.Expires = dtNow;
HttpContext.Current.Response.Cookies.Add(cookies);
}
}
public enum TimeUnit
{
/// <summary>
/// 秒
/// </summary>
Second,
/// <summary>
/// 分
/// </summary>
Minute,
/// <summary>
/// 时
/// </summary>
Hour,
/// <summary>
/// 天
/// </summary>
Day,
/// <summary>
/// 月
/// </summary>
Month,
/// <summary>
/// 年
/// </summary>
Year
}
}
}
加密类
DESEncrypt.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace WebApplication2
{
public class DESEncrypt
{
/// <summary>
/// 默认密钥向量
/// </summary>
private static byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static String EncryptDES(string encryptString, string encryptKey)
{
byte[] bKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] bIV = IV;
byte[] bStr = Encoding.UTF8.GetBytes(encryptString);
try
{
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write);
cStream.Write(bStr, 0, bStr.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return string.Empty;
}
}
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同></param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static String DecryptDES(String decryptString, String decryptKey)
{
try
{
byte[] bKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
byte[] bIV = IV;
byte[] bStr = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, desc.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write);
cStream.Write(bStr, 0, bStr.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return string.Empty;
}
}
}
}
ok