Пример #1
0
        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);
        }
Пример #2
0
        /// <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);
        }