using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http; using VueWebApi.DLL.BLL; using VueWebApi.Models; using VueWebApi.Tools; namespace VueWebApi.Controllers { [RoutePrefix(prefix: "api/Login")] [ControllerGroup("系统设置", "在线接口")] public class LoginController : ApiController { //定义全局信息返回变量 ToMessage mes = new ToMessage(); RedisHelper redis = new RedisHelper(); /// /// 用户登录 /// /// 用户名 /// 密码 /// 登录组织编码 /// [Route(template: "LoginSave")] [HttpGet] public HttpResponseMessage LoginSave(string username, string password, string torg_code) { DataTable dt = LoginBLL.LoginSearch(username,password, torg_code); if (dt.Rows.Count > 0) { List mss = new List(); User ms = new User(); //ms.guid=Guid.NewGuid().ToString(); ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString()); ms.username = dt.Rows[0]["USERNAME"].ToString(); ms.password = dt.Rows[0]["PASSWORD"].ToString(); ms.usertype = "PC"; mss.Add(ms); HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms); User loginUser = JsonConvert.DeserializeObject(HttpContext.Current.Session["User"].ToString()); //如果redis登录用户中不存在当前用户 if (redis.Get("LoginUserID" + ms.userid, 0) == null) { //redis.Remove("LoginUserID" + ms.userid, 0); //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效) redis.Set("LoginUserID" + ms.userid, ms, redis.secondsTimeOut, 0); } else //如果存在 { //获取redis中当前用户信息 User r_loginUser = redis.Get("LoginUserID" + ms.userid, 0); //如果session中的用户guid和redis中的用户guid匹配 if (r_loginUser.guid.Equals(loginUser.guid)) { //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效) redis.Set("LoginUserID" + loginUser.userid, loginUser, redis.secondsTimeOut, 0); } else { mes.code = "300"; mes.Message = "当前账号已登录!"; } } // 链表存储 //RedisHelpers.AddEntityToList>("003", mss); //RedisHelpers.AddEntityToList("004", ms); //Console.WriteLine(RedisHelpers.Get("001", 1)); //Console.WriteLine(RedisHelpers.Get>("002", 3)); } else { mes.code = "300"; mes.Message = "账号或密码不正确!"; } return mes.ResponseMess(mes); } /// /// 修改密码 /// /// 用户名 /// 密码 /// 新密码 /// 登录组织编码 /// [Route(template: "UpdateUserPassword")] [HttpPost] public HttpResponseMessage UpdateUserPassword(string username, string password,string newpassword,string torg_code) { mes = LoginBLL.UpdateUserPassword(username, password,newpassword, torg_code); return mes.ResponseMess(mes); } } }