コード例 #1
0
        /// <summary>
        /// 解码
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public UserIdSessionData Decrypt(string token)
        {
            //验证用户信息
            UserIdSessionData sessionData = null;

            try
            {
                sessionData = SessionKeyHelper.Decrypt(token);
            }
            catch
            {
                Logger.Error(String.Format("{0}解密失败 ", token));
            }

            return(sessionData);
        }
コード例 #2
0
        //public List<Coupon> GetAppliedCoupons()
        //{
        //    List<Coupon> coupons = new List<Coupon>();
        //    foreach(CartCoupon cc in this.CartCouponCollectionByCartId)
        //    {
        //        coupons.Add(cc.UpToCouponByCouponId);
        //    }
        //    return coupons;
        //}

        public decimal GetTotal()
        {
            SessionKeyHelper sessionKeyHelper = new SessionKeyHelper(this.StoreId.GetValueOrDefault(-1));

            CheckoutOrderInfo checkoutOrderInfo = HttpContext.Current.Session[sessionKeyHelper.CheckoutOrderInfo] as CheckoutOrderInfo;

            if (checkoutOrderInfo != null)
            {
                return(checkoutOrderInfo.Total);
            }
            else
            {
                checkoutOrderInfo = new CheckoutOrderInfo()
                {
                    Cart = this
                };
                return(checkoutOrderInfo.Total);
            }
        }
コード例 #3
0
        protected override object GetModelInstance(string token)
        {
            if (String.IsNullOrWhiteSpace(token))
            {
                return(null);
            }

            var userSessionData = SessionKeyHelper.Decrypt(token);

            if (userSessionData == null)
            {
                return(null);
            }

            if (userSessionData.Expired)
            {
                return(null);
            }

            try
            {
                return(this._userService.Get(Int32.Parse(userSessionData.UserId)));
            }
            catch (Exception ex)
            {
                if (HttpContext.Current != null)
                {
                    Logger.Error("httpurl:" + HttpContext.Current.Request.Url.ToString());
                }
                while (ex != null)
                {
                    Logger.Error(ex);

                    ex = ex.InnerException;
                }

                throw new ArgumentException("在binder时获取用户信息失败");
            }
        }
コード例 #4
0
        public RestfulResult Detail(UpdateCustomerRequest request, int?authuid, UserModel authUser)
        {
            request.AuthUid  = authuid.Value;
            request.AuthUser = authUser;

            if (String.Compare(request.Method, DefineRestfulMethod.Update, StringComparison.OrdinalIgnoreCase) == 0)
            {
                //更新
                return(new RestfulResult
                {
                    Data = this._customerService.Update(request)
                });
            }
            var linq = _customerRepo.Get(u => u.Id == authUser.Id)
                       .GroupJoin(_resourceRepo.Get(r => r.SourceType == (int)SourceType.CustomerThumbBackground),
                                  o => o.Id,
                                  i => i.SourceId,
                                  (o, i) => new { C = o, RB = i })
                       .GroupJoin(_useraccountRepo.Get(ua => ua.Status != (int)DataStatus.Deleted),
                                  o => o.C.Id,
                                  i => i.User_Id,
                                  (o, i) => new { C = o.C, RB = o.RB, UA = i });
            var response = from l in linq.ToList()
                           select new CustomerInfoResponse().FromEntity <CustomerInfoResponse>(l.C
                                                                                               , c => {
                var bgThum = l.RB.FirstOrDefault();
                if (bgThum != null)
                {
                    c.BackgroundLogo_r = new ResourceInfoResponse().FromEntity <ResourceInfoResponse>(bgThum);
                }
                c.CountsFromEntity(l.UA);
                c.Token = SessionKeyHelper.Encrypt(authUser.Id.ToString(CultureInfo.InvariantCulture));
            });;

            return(new RestfulResult
            {
                Data = new ExecuteResult <CustomerInfoResponse>(response.FirstOrDefault())
            });
        }
コード例 #5
0
 public string Encrypt(string userid)
 {
     return(SessionKeyHelper.Encrypt(userid));
 }
コード例 #6
0
 /// <summary>
 /// 加码
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public string Encrypt(UserIdSessionData data)
 {
     return(SessionKeyHelper.Encrypt(data));
 }
コード例 #7
0
        public virtual void ExecActionExecuting(ActionExecutingContext filterContext)
        {
            //获取SessionKey
            var httpContext = filterContext.HttpContext;
            var token       = httpContext.Request[Define.Token];

            if (String.IsNullOrEmpty(token) && !_holdon)
            {
                //filterContext.HttpContext.ClearError();
                filterContext.Result = new RestfulResult
                {
                    Data = new ExecuteResult
                    {
                        StatusCode = StatusCode.ClientError,
                        Message    = String.Format("{0}为空", Define.Token)
                    }
                };
                return;
                //return false;
            }

            //验证用户信息
            try
            {
                _sessionData = SessionKeyHelper.Decrypt(token);
            }
            catch
            {
                _log.Error(String.Format("{0}解密失败 ", token));
            }

            // 解密失败返回结果
            if (_sessionData == null && !_holdon)
            {
                filterContext.Result = new RestfulResult
                {
                    Data = new ExecuteResult
                    {
                        StatusCode = StatusCode.Unauthorized,
                        Message    = "您的身份验证失败."
                    }
                };

                return;
            }

            // Session过期
            if (_sessionData != null && _sessionData.Expired && !_holdon)
            {
                filterContext.Result = new RestfulResult
                {
                    Data = new ExecuteResult
                    {
                        StatusCode = StatusCode.Unauthorized,
                        Message    = "您已经很长时候没有使用啦,为保证你的账户安全,请重新登录."
                    }
                };

                return;
            }

            //TODO:可以通过ActionDescriptor获取参数的类型,这里约定好就可以了,没有必要去那样做


            var output = 0;

            if (_sessionData != null)
            {
                Int32.TryParse(_sessionData.UserId, out output);
            }

            if (_sessionData != null)
            {
                this._authUser = ServiceLocator.Current.Resolve <IUserService>().Get(Int32.Parse(_sessionData.UserId));
                if (this._authUser == null)
                {
                    filterContext.Result = new RestfulResult
                    {
                        Data = new ExecuteResult
                        {
                            StatusCode = StatusCode.Unauthorized,
                            Message    = "您的身份验证失败."
                        }
                    };
                    return;
                }

                filterContext.ActionParameters[Define.AuthUser] = this._authUser;
                ////// 设置参数userId的值
                ////httpContext.Request.
                httpContext.Request.RequestContext.RouteData.Values.Add(Define.AuthUserId, output.ToString(CultureInfo.InvariantCulture));
                //httpContext.Request.Params.Add(Define.AuthUserId, output.ToString(CultureInfo.InvariantCulture));
                filterContext.ActionParameters[Define.AuthUserId] = output;
            }
            else
            {
                filterContext.ActionParameters[Define.AuthUser]   = null;
                filterContext.ActionParameters[Define.AuthUserId] = null;
            }

            ExecActionRoleAuthorizeing(filterContext);
        }