yl
2022-07-31 86a0c62c22b793ebbbc67a5f2b01a9a4800640e2
VueWebApi/Controllers/LoginController.cs
@@ -50,11 +50,11 @@
                    //User loginUser = JsonConvert.DeserializeObject<User>(HttpContext.Current.Session["User"].ToString());
                    User loginUser = JsonConvert.DeserializeObject<User>(JsonConvert.SerializeObject(ms));
                    //如果redis登录用户中不存在当前用户
                    if (redis.Get<User>("LoginUserID" + ms.userid, 0) == null)
                    if (redis.Get<User>("LoginUserID" + ms.usertype + ms.userid, 0) == null)
                    {
                        //redis.Remove("LoginUserID" + ms.userid, 0);
                        //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                        redis.Set<User>("LoginUserID" + ms.userid, ms, redis.secondsTimeOut, 0);
                        redis.Set<User>("LoginUserID" + ms.usertype + ms.userid, ms, redis.secondsTimeOut, 0);
                        //登录信息写入session
                        HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms);
                        //写入登录操作记录
@@ -66,18 +66,18 @@
                    else //如果存在
                    {
                        //获取redis中当前用户信息
                        User r_loginUser = redis.Get<User>("LoginUserID" + ms.userid, 0);
                        User r_loginUser = redis.Get<User>("LoginUserID" + ms.usertype + ms.userid, 0);
                        //如果session中的用户usercode和redis中的用户usercode匹配
                        if (r_loginUser.usercode.Equals(loginUser.usercode))
                        {
                            mes.data = ms;
                            mes.code = "300";
                            mes.Message = "当前账号已登录!";
                            mes.code = "302";
                            mes.Message = "当前账号已登录,是否强制下线!";
                        }
                        else
                        {
                            //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                            redis.Set<User>("LoginUserID" + loginUser.userid, loginUser, redis.secondsTimeOut, 0);
                            redis.Set<User>("LoginUserID" + ms.usertype + loginUser.userid, loginUser, redis.secondsTimeOut, 0);
                            //登录信息写入session
                            HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms);
                            //写入登录操作记录
@@ -105,9 +105,41 @@
                mes.code = "300";
                mes.Message = e.Message;
            }
            return mes.ResponseMess(mes);
        }
        #region[强制下线接口]
        /// <summary>
        /// 强制下线接口
        /// </summary>
        /// <param name="userid">用户id</param>
        /// <param name="usercode">用户编码</param>
        /// <param name="username">用户名</param>
        /// <param name="usertype">操作端PC/APP</param>
        /// <returns></returns>
        [Route(template: "ForcedOffline")]
        [HttpPost]
        public HttpResponseMessage ForcedOffline(int userid, string usercode, string username, string usertype)
        {
            try
            {
                redis.Remove("LoginUserID"+usertype+ userid, 0); //删除redis
                mes.code = "200";
                mes.count = 0;
                mes.Message = "强制下线成功!";
                mes.data = null;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes.ResponseMess(mes);
        }
        #endregion
        #region[查询登录菜单]
@@ -142,11 +174,11 @@
        /// <param name="password">密码</param>
        /// <param name="newpassword">新密码</param>
        /// <returns></returns>
        [ChannelActionFilter,Route(template: "UpdateUserPassword")]
        [ChannelActionFilter, Route(template: "UpdateUserPassword")]
        [HttpPost]
        public HttpResponseMessage UpdateUserPassword(string usercode, string username, string password,string newpassword)
        public HttpResponseMessage UpdateUserPassword(string usercode, string username, string password, string newpassword)
        {
            mes = LoginBLL.UpdateUserPassword(usercode,username, password,newpassword);
            mes = LoginBLL.UpdateUserPassword(usercode, username, password, newpassword);
            return mes.ResponseMess(mes);
        }
        #endregion
@@ -162,9 +194,9 @@
        /// <returns></returns>
        [Route(template: "LoginOut")]
        [HttpPost]
        public HttpResponseMessage LoginOut(int userid, string usercode, string username,string usertype)
        public HttpResponseMessage LoginOut(int userid, string usercode, string username, string usertype)
        {
            mes = LoginBLL.LoginOut(userid,usercode, username, usertype);
            mes = LoginBLL.LoginOut(userid, usercode, username, usertype);
            return mes.ResponseMess(mes);
        }
        #endregion