1登录Login.cs(主要代码)
protected void BtnLogin_Click(object sender, EventArgs e) { //string url = "http://sec.yoka.com/checkcode/check_code.php?checkkey=" + this.hdCheckCodeUrl.Value + "&checkvalue=" + this.txtValidCode.Text.Trim(); //string checkCodeResult = PageText.GetWebContent(url); //if (checkCodeResult != "true") //{ // this.lbNotice.Text = "验证码错误!"; // this.txtValidCode.Text = ""; // return; //} if (txtPwd.Text.Length == 0 || txtUserName.Text.Length == 0) { this.lbNotice.Text = "请输入用户名和密码"; return; } IWOMTrackerDBLayer.LoginState loginState = IWOMTrackerDBLayer.Common.LoginUserManager.Login(Server.UrlEncode(txtUserName.Text.Trim()), txtPwd.Text.Trim(), cbRemember.Checked, false); if (loginState == IWOMTrackerDBLayer.LoginState.Success) { //兼职权限问题,限制一个帐户不能同时登陆。(创建token) IWOMTrackerDBLayer.IWOMTrackerModel.LoginUserModel loginUser = IWOMTrackerDBLayer.Common.LoginUserManager.GetLoginUser(false); Session["iwomSingleUserLogin"] = SingleUserLogin.CreateToken(txtUserName.Text,loginUser.UserState); // if (Request.QueryString["adminlogin"] != null && Request.QueryString["adminlogin"] == "t") { Response.Redirect("~/Admin/Default.aspx"); } else if (Request.QueryString["trackeradminlogin"] != null && Request.QueryString["trackeradminlogin"] == "t") { Response.Redirect("~/TrackerAdmin/Default.aspx"); } else { Response.Redirect("~/Default.aspx"); } } else { this.lbNotice.Text = "错误的用户名或密码"; } }2.母版页主要代码
protected void Page_Load(object sender, EventArgs e) { loginUser = IWOMTrackerDBLayer.Common.LoginUserManager.GetLoginUser(false); if (loginUser.UserID > 0 && (CommonFunction.CheckManage(loginUser.UserState) || loginUser.UserState == IWOMTrackerDBLayer.UserState.Normal)) //权限验证 { //验证TOKEN Hashtable userInformation = new Hashtable(); userInformation = (Hashtable)Session["iwomSingleUserLogin"]; if (!SingleUserLogin.ValidationToken(userInformation, loginUser.UserState)) { //先提示信息,然后再跳转! Page.ClientScript.RegisterStartupScript(this.GetType(), "error", "alert('一个帐户不能同时登陆,请重新登录。');window.location.href='Login.aspx';", true); } } }3.singlerUserLogin.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Collections; namespace IWOMTracker.Common { public class SingleUserLogin { private static System.Web.Caching.Cache httpRuntimeCache = System.Web.HttpRuntime.Cache; public static Hashtable CreateToken(string name) { return CreateToken(name, IWOMTrackerDBLayer.UserState.Normal); } public static Hashtable CreateToken(string name, IWOMTrackerDBLayer.UserState state) { Hashtable userInformation = new Hashtable(); if (state == IWOMTrackerDBLayer.UserState.Normal) { string key = name + "SULToken"; string value = Guid.NewGuid().ToString(); userInformation.Add("USERKEY", key); userInformation.Add("USERVALUE", value); httpRuntimeCache.Insert(key, value, null, DateTime.Now.AddHours(24), TimeSpan.Zero); } return userInformation; } public static bool ValidationToken(Hashtable userInformation, IWOMTrackerDBLayer.UserState state) { if (state != IWOMTrackerDBLayer.UserState.Normal) return true; if(userInformation.Count==0)return false; string key = userInformation["USERKEY"].ToString(); string value = userInformation["USERVALUE"].ToString(); string token =httpRuntimeCache[key]==null?"":httpRuntimeCache[key].ToString(); if (state == IWOMTrackerDBLayer.UserState.Normal && value != token) { return false; } else { return true; } } public static void RemoveToken(Hashtable userInformation, IWOMTrackerDBLayer.UserState state) { string key = userInformation["USERKEY"].ToString(); httpRuntimeCache.Remove(key); } } }