From 541f5ec7d947837f873435bea873e95c4b6cc95e Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期六, 29 十月 2022 13:30:58 +0800
Subject: [PATCH] 单个登录用户登录没控制住问题修改
---
VueWebApi/Controllers/LoginController.cs | 100 +++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 86 insertions(+), 14 deletions(-)
diff --git a/VueWebApi/Controllers/LoginController.cs b/VueWebApi/Controllers/LoginController.cs
index f3e034a..01057f4 100644
--- a/VueWebApi/Controllers/LoginController.cs
+++ b/VueWebApi/Controllers/LoginController.cs
@@ -40,7 +40,7 @@
{
List<User> mss = new List<User>();
User ms = new User();
- ms.guid = username + password + Guid.NewGuid().ToString();
+ ms.guid = usertype+username + password + Guid.NewGuid().ToString();
ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
ms.usercode = dt.Rows[0]["USERCODE"].ToString();
ms.username = dt.Rows[0]["USERNAME"].ToString();
@@ -85,6 +85,7 @@
HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms);
//鍐欏叆鐧诲綍鎿嶄綔璁板綍
mes = LoginBLL.LoginBas(ms.usercode, ms.usertype);
+ mes.data = ms;
mes.code = "200";
mes.Message = "鐧诲綍鎴愬姛!";
}
@@ -121,13 +122,23 @@
/// <param name="usercode">鐢ㄦ埛缂栫爜</param>
/// <param name="username">鐢ㄦ埛鍚�</param>
/// <param name="usertype">鎿嶄綔绔疨C/APP</param>
+ /// <param name="rid">rid鏋佸厜鎺ㄩ�佽幏鍙栬澶噄d</param>
/// <returns></returns>
[Route(template: "ForcedOffline")]
[HttpPost]
- public HttpResponseMessage ForcedOffline(int userid, string usercode, string username, string usertype)
+ public HttpResponseMessage ForcedOffline(int userid, string usercode, string username, string usertype,string rid)
{
+ string sql="";
+ List<object> list = new List<object>();
try
{
+ if (usertype == "APP")
+ {
+ //鏇存柊rid
+ sql = @"update [dbo].[TUser] set rid=@rid where usercode=@usercode";
+ list.Add(new { str = sql, parm = new { rid = rid, usercode = username } });
+ bool aa = DapperHelper.DoTransaction(list);
+ }
redis.Remove("LoginUserID" + usertype + userid, 0); //鍒犻櫎redis
mes.code = "200";
mes.count = 0;
@@ -202,6 +213,8 @@
[ChannelActionFilter]
public HttpResponseMessage LoginOut(int userid, string usercode, string username, string usertype)
{
+ var sql = "";
+ List<object> list = new List<object>();
mes = LoginBLL.LoginOut(userid, usercode, username, usertype);
return mes.ResponseMess(mes);
}
@@ -228,27 +241,86 @@
DataTable dt = LoginBLL.LoginSearch(username, password);
if (dt.Rows.Count > 0)
{
- //鍐欏叆鐧诲綍鎿嶄綔璁板綍
- mes = LoginBLL.LoginBas(username, usertype);
- //鏇存柊rid
- sql = @"update [dbo].[TUser] set rid=@rid where usercode=@usercode";
- list.Add(new { str = sql, parm = new { rid = rid, usercode = username } });
- bool aa = DapperHelper.DoTransaction(list);
-
List<User> mss = new List<User>();
User ms = new User();
- //ms.guid = username + password + Guid.NewGuid().ToString();
- ms.guid = rid.ToString();
+ ms.guid = usertype+username + password + Guid.NewGuid().ToString();
ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
ms.usercode = dt.Rows[0]["USERCODE"].ToString();
ms.username = dt.Rows[0]["USERNAME"].ToString();
ms.password = dt.Rows[0]["PASSWORD"].ToString();
ms.usertype = usertype;
+ ms.rediskey = "LoginUserID" + ms.usertype + ms.userid;
mss.Add(ms);
+ HttpContext.Current.Session.Clear(); //浠庝細璇濈姸鎬侀泦鍚堜腑鍒犻櫎鎵�鏈夌殑閿��
+ User loginUser = JsonConvert.DeserializeObject<User>(JsonConvert.SerializeObject(ms));
+ //濡傛灉redis鐧诲綍鐢ㄦ埛涓笉瀛樺湪褰撳墠鐢ㄦ埛
+ if (redis.Get<User>("LoginUserID" + ms.usertype + ms.userid, 0) == null)
+ {
+ //鍐欏叆redis(娉ㄦ剰锛歳edis绫婚噷闈㈢殑澶辨晥鏃堕棿蹇呴』鍦╧ey鍒涘缓瀹屾垚涔嬪悗鎵嶇敓鏁�)
+ redis.Set<User>("LoginUserID" + ms.usertype + ms.userid, ms, redis.secondsTimeOut, 0);
+ //鐧诲綍淇℃伅鍐欏叆session
+ HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms);
+ //鏇存柊rid
+ sql = @"update [dbo].[TUser] set rid=@rid where usercode=@usercode";
+ list.Add(new { str = sql, parm = new { rid = rid, usercode = username } });
+ bool aa = DapperHelper.DoTransaction(list);
+ //鍐欏叆鐧诲綍鎿嶄綔璁板綍
+ mes = LoginBLL.LoginBas(ms.usercode, ms.usertype);
+ mes.code = "200";
+ mes.Message = "鐧诲綍鎴愬姛!";
+ mes.data = ms;
+ }
+ else //濡傛灉瀛樺湪
+ {
+ //鑾峰彇redis涓綋鍓嶇敤鎴蜂俊鎭�
+ User r_loginUser = redis.Get<User>("LoginUserID" + ms.usertype + ms.userid, 0);
+ //濡傛灉session涓殑鐢ㄦ埛usercode鍜宺edis涓殑鐢ㄦ埛usercode鍖归厤
+ if ((r_loginUser.usercode + r_loginUser.usertype).Equals(loginUser.usercode + loginUser.usertype))
+ {
+ mes.data = ms;
+ mes.code = "302";
+ mes.Message = "褰撳墠璐﹀彿宸茬櫥褰�,鏄惁寮哄埗涓嬬嚎!";
+ }
+ else
+ {
+ //閲嶇疆杩囨湡鏃堕棿(娉ㄦ剰锛歳edis绫婚噷闈㈢殑澶辨晥鏃堕棿蹇呴』鍦╧ey鍒涘缓瀹屾垚涔嬪悗鎵嶇敓鏁�)
+ redis.Set<User>("LoginUserID" + ms.usertype + loginUser.userid, loginUser, redis.secondsTimeOut, 0);
+ //鐧诲綍淇℃伅鍐欏叆session
+ HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms);
+ //鏇存柊rid
+ sql = @"update [dbo].[TUser] set rid=@rid where usercode=@usercode";
+ list.Add(new { str = sql, parm = new { rid = rid, usercode = username } });
+ bool aa = DapperHelper.DoTransaction(list);
+ //鍐欏叆鐧诲綍鎿嶄綔璁板綍
+ mes = LoginBLL.LoginBas(ms.usercode, ms.usertype);
+ mes.data = ms;
+ mes.code = "200";
+ mes.Message = "鐧诲綍鎴愬姛!";
+ }
+ }
- mes.code = "200";
- mes.Message = "鐧诲綍鎴愬姛!";
- mes.data = ms;
+
+ ////鍐欏叆鐧诲綍鎿嶄綔璁板綍
+ //mes = LoginBLL.LoginBas(username, usertype);
+ ////鏇存柊rid
+ //sql = @"update [dbo].[TUser] set rid=@rid where usercode=@usercode";
+ //list.Add(new { str = sql, parm = new { rid = rid, usercode = username } });
+ //bool aa = DapperHelper.DoTransaction(list);
+
+ //List<User> mss = new List<User>();
+ //User ms = new User();
+ ////ms.guid = username + password + Guid.NewGuid().ToString();
+ //ms.guid = rid.ToString();
+ //ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
+ //ms.usercode = dt.Rows[0]["USERCODE"].ToString();
+ //ms.username = dt.Rows[0]["USERNAME"].ToString();
+ //ms.password = dt.Rows[0]["PASSWORD"].ToString();
+ //ms.usertype = usertype;
+ //mss.Add(ms);
+
+ //mes.code = "200";
+ //mes.Message = "鐧诲綍鎴愬姛!";
+ //mes.data = ms;
}
else
{
--
Gitblit v1.9.3