public ResultData Login(LoginUser login) { if (login == null) { return(new ResultData((int)HttpStatusCode.BadRequest, "参数错误")); } string userID = login.UserID; string password = login.Password; if (string.IsNullOrEmpty(userID) || string.IsNullOrEmpty(password)) { return(new ResultData(ResultType.UserNameOrPasswordError, EnumExtension.GetEnumDescription(ResultType.UserNameOrPasswordError))); } User u = null; ResultType loginResult = UserManager.Login(login, out u); ResultData resultData = new ResultData { Result = Convert.ToInt32(loginResult), Desc = EnumExtension.GetEnumDescription(loginResult) }; if (ResultType.Success == loginResult) { // 写日志 var log = new Log() { Action = "Login", Detail = "会员登录:" + u.UserID, CreateDate = DateTime.Now, CreatorLoginName = u.UserID, IpAddress = HttpContext.Current.Request.UserHostAddress }; LogRepository.Add(log); // 保存令牌 UserTokenManager.RemoveTokenWithUserID(u.UserID); var userToken = new UserToken { UserID = u.UserID, Token = Utility.Encrypt(string.Format("{0}{1}", Guid.NewGuid().ToString("D"), DateTime.Now.Ticks)), Timeout = DateTime.Now.AddHours(8) }; UserTokenManager.AddToken(userToken); resultData.Data = new { user_id = userToken.UserID, token = userToken.Token, timeout = userToken.Timeout.ToString("yyyy/MM/dd HH:mm:ss") }; } return(resultData); }
/// <summary> /// 生成token /// </summary> /// <returns></returns> private UserTokenExtend GenernateToken() { //保存用户访问标识token UserTokenExtend myToken = new UserTokenExtend(); //时间戳 DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 8, 0, 0, 0)); long t = (DateTime.Now.Ticks - startTime.Ticks) / 10000; //除10000调整为13位 //时间戳+随机码 string tokenStr = t + Guid.NewGuid().ToString().Replace("-", "").ToLower(); myToken.Token = tokenStr; myToken.UserId = ""; myToken.TrueName = ""; //myToken.adcd = ""; //myToken.userName = ""; myToken.IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] ?? null; myToken.ExpireTime = DateTime.Now.AddHours(3); //保存token UserTokenManager.AddToken(myToken); return(myToken); }