/// <summary>
/// 登陆判断
/// </summary>
/// <param name="username"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public ActionResult Login(string userName, string password)
{
string statudate = string.Format("select * from users where userID='{0}' and userpassword='{1}'", userName, password);
DataTable dtstatu = DBHelper.Find(statudate);
if (dtstatu.Rows[0]["statudate"]==null)
{
dtstatu.Rows[0]["statudate"] = DateTime.Now;
}
TimeSpan span =DateTime.Now - Convert.ToDateTime(dtstatu.Rows[0]["statudate"].ToString());
int day =Convert.ToInt32(span.Days.ToString().PadLeft(2, '0'));
int Hours = Convert.ToInt32(span.Hours.ToString().PadLeft(2, '0'));
int Minutes = Convert.ToInt32(span.Minutes.ToString().PadLeft(2, '0'));
int Seconds = Convert.ToInt32(span.Seconds.ToString().PadLeft(2, '0'));
if (day > 0||Hours>0||Minutes>=3)
{
string upstatudate = string.Format("update users set statu=0 where userID='{0}'", userName);
DBHelper.Execute(upstatudate);
}
string sql = string.Format("select * from users where userID='{0}' and userpassword='{1}'", userName, password);
DataTable dt = DBHelper.Find(sql);
if (dt != null && dt.Rows[0]["statu"].ToString()=="0")
{
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)//每一行信息,新建一个Dictionary<string,object>,将该行的每列信息加入到字典
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc].ToString());
}
list.Add(result);
}
userInfo.UserID = userName;
userInfo.Userpassword = password;
Session["userName"] = dt.Rows[0]["userID"].ToString();
Session["identity"] = dt.Rows[0]["identity"].ToString();
Session["statu"] = dt.Rows[0]["statu"].ToString();
string statusql = string.Format("update users set statu=1 where userID='{0}'", dt.Rows[0]["userID"].ToString());
DBHelper.Execute(statusql);
return Content("1");
}
else if (dt!=null && dt.Rows[0]["statu"].ToString() == "1")
{
return Content("2");
}
else
{
return Content("3");
}
}
/// <summary>
/// 关闭页面更新状态为0
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public bool upstatu(string userName)
{
string sql =string.Format("update users set statu=0 where userID='{0}'",userName);
return DBHelper.Execute(sql);
}
该部分功能是模拟用户单例登陆,,登陆时给个状态去限制,也做了时间判断避免由于不可控原因导致状态修改失败,时间判断出就是根据当前时间和上次登陆时间去在本次登陆判断状态是否修改,,后面一个更新方法我是放在了退出和关闭页面事件里调用
window.onbeforeunload = function (e) {
//更改用户登录状态
$.ajax({
type: "post",
url: "/Home/upstatu",
data: { 'userName': $(".adminName").text() },
success: function (data) {
}
});
};
这部分代码在此处没啥用,从网上荡的数据格式转换
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)//每一行信息,新建一个Dictionary<string,object>,将该行的每列信息加入到字典
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc].ToString());
}
list.Add(result);
}
js使用的是layui框架
//登录按钮
form.on("submit(login)", function(data) {
//$(this).text("登录中...").attr("disabled", "disabled").addClass("layui-disabled");
//setTimeout(function() {
// var index = layer.msg('登录中,请稍候', {
// icon: 16,
// time: false,
// shade: 0.8
// });
//}, 1000);
var userName = data.field.userName;
var password = data.field.password;
$.ajax({
url: "/Home/Login",
type: "post",
data: { 'userName': userName, 'password': password },
success: function (data) {
console.info(data)
if (data ==="1") {
window.location.href = "../../index.html";
} else if (data==="2") {
layer.msg('账号已在其他地方登陆!', { icon: 5, time: 2000, anim: 6 });
} else {
layer.msg('账号或密码不正确!', { icon: 5, time: 2000, anim: 6 });
}
layer.closeAll('loading');
}
});
return false;
})