62,244
社区成员




/// <summary>
/// 用户点击登陆按钮进行登录操作。
/// </summary>
protected void btnLogin_Click(object sender, EventArgs e)
{
var userInfo = PrivilegeManager.GetUserInfo(strLoginID, strLoginPwd);
if (userInfo != null)
{
var iPAddresses = Dns.Resolve(Dns.GetHostName()).AddressList;
var dateTimeNow = DateTime.Now;
if (null != iPAddresses && iPAddresses.Length > 0)
{
//1表明当前帐号已经被占用,0为否
if (string.Equals("1", userInfo.IsUsed, StringComparison.InvariantCultureIgnoreCase) && userInfo.LastLoginTime.HasValue)
{
var diffTime = dateTimeNow - userInfo.LastLoginTime.Value;
var sessionTimeOut = HttpContext.Current.Session.Timeout;
if (diffTime.TotalMinutes < sessionTimeOut && !string.Equals(iPAddresses[0].ToString(), userInfo.LoginIPAddress, StringComparison.InvariantCultureIgnoreCase))
{
Alert.Show("对不起,您当前帐户已经被其他人使用了,请您更换其它帐号后再尝试登陆!", "登陆失败", MessageBoxIcon.Warning);
return;
}
}
//更新P_USERACCOUNT表的帐户信息为占用状态,登录地址为当前机器的IP
PrivilegeManager.UpdateUserAccountStatus("1", userInfo.AccountGuid, dateTimeNow, iPAddresses[0].ToString());
Session[ConstValue.SESSION_USER_INFO] = userInfo;
Response.Redirect("/default.aspx");
}
}
else
{
Alert.Show("用户名或密码错误,请重试!");
this.txtLoginID.Focus();
return;
}
}
protected void Application_EndRequest(object sender, EventArgs e)
{
var iPAddresses = Dns.Resolve(Dns.GetHostName()).AddressList;
if (null != iPAddresses && iPAddresses.Length > 0)
{
var ipAddress = iPAddresses[0].ToString();
var userAccountGuid = PrivilegeManager.GetLoginAccountGuidByIP(ipAddress);
if (!string.IsNullOrEmpty(userAccountGuid))
{
//如果收到了请求,则说明该帐号是在线状态,则更改最后登陆时间为当前时间,登陆IP为当前机器IP
PrivilegeManager.UpdateUserAccountStatus("1", userAccountGuid, DateTime.Now, ipAddress);
}
}
}