Example #1
0
        /// <summary>
        ///当token将要过期时,提前置换一个新的token
        /// </summary>
        /// <returns></returns>
        public async Task <WebResponseContent> ReplaceToken()
        {
            var db = DbContext.Set <Hiiops_Cart_SellerUser>();
            WebResponseContent    responseContent = new WebResponseContent();
            string                error           = "";
            Hiiops_Cart_LoginInfo loginInfo       = null;

            try
            {
                string requestToken = HttpContext.Current.Request.Headers[AppSetting.TokenHeaderName];
                requestToken = requestToken?.Replace("Bearer ", "");
                if (SellerContent.Current.Token != requestToken)
                {
                    return(responseContent.Error("Token已失效!"));
                }

                if (JwtHelper.IsExp(requestToken))
                {
                    return(responseContent.Error("Token已过期!"));
                }

                int Id = SellerContent.Current.Id;
                loginInfo = await db.Where(x => x.Id == Id).Select(s => new Hiiops_Cart_LoginInfo()
                {
                    Id       = Id,
                    Account  = s.Account,
                    UnionId  = s.UnionId,
                    NickNme  = s.NickName,
                    OpenId   = s.OpenId,
                    Phone    = s.Phone,
                    Enable   = s.Status,
                    Token    = s.Token,
                    UserName = s.Name
                }).FirstAsync();

                if (loginInfo == null)
                {
                    return(responseContent.Error("未查到用户信息!"));
                }

                string token = JwtHelper.IssueJwt(Id.ToString());
                //移除当前缓存
                base.CacheContext.Remove(Id.GetUserIdKey());
                //只更新的token字段
                DbContext.Database.ExecuteSqlRaw($"UPDATA Hiiops_Cart_SellerUser SET Token = '{token}'");
                responseContent.OK(null, token);
            }
            catch (Exception ex)
            {
                error = ex.Message + ex.StackTrace + ex.Source;
                responseContent.Error("token替换出错了..");
            }
            finally
            {
                Logger.Info(LoggerType.ReplaceToeken, ($"用户Id:{loginInfo?.Id},用户{loginInfo?.UserName}")
                            + (responseContent.Status ? "token替换成功" : "token替换失败"), null, error);
            }
            return(responseContent);
        }
Example #2
0
        public Hiiops_Cart_LoginInfo GetLoginInfo(int Id)
        {
            if (_loginInfo != null)
            {
                return(_loginInfo);
            }
            if (Id <= 0)
            {
                _loginInfo = new Hiiops_Cart_LoginInfo();
                return(_loginInfo);
            }
            string key = Id.GetUserIdKey();

            _loginInfo = CacheService.Get <Hiiops_Cart_LoginInfo>(key);
            if (_loginInfo != null && _loginInfo.Id > 0)
            {
                return(_loginInfo);
            }

            _loginInfo = DBServerProvider.DbContext.Set <Hiiops_Cart_SellerUser>()
                         .Where(x => x.Id == Id).Select(s => new Hiiops_Cart_LoginInfo()
            {
                Id       = Id,
                Account  = s.Account,
                UnionId  = s.UnionId,
                NickNme  = s.NickName,
                OpenId   = s.OpenId,
                Phone    = s.Phone,
                Enable   = s.Status,
                Token    = s.Token,
                UserName = s.Name
            }).FirstOrDefault();

            if (_loginInfo != null && _loginInfo.Id > 0)
            {
                CacheService.AddObject(key, _loginInfo);
            }
            return(_loginInfo ?? new Hiiops_Cart_LoginInfo());
        }