Exemplo n.º 1
0
        public static CacheUser GetAuthorizeUser(out string msg)
        {
            msg = "";
            CacheUser user = null;

            user = HttpContext.Current.Session["CacheUser"] as CacheUser;
            if (user == null)
            {
                if (HttpContext.Current.Request.Headers != null && !string.IsNullOrEmpty(HttpContext.Current.Request.Headers.Get("Ticket")))
                {
                    string ticket = CommFunc.ConvertDBNullToString(HttpContext.Current.Request.Headers.Get("Ticket"));
                    int    len    = ticket.Length;
                    if (len >= 14)
                    {
                        string   flag = CommFunc.ConvertDBNullToString(ticket.Substring(10, 1));
                        int      seed = CommFunc.CharToNuner(flag);
                        string   kk = CommFunc.ConvertDBNullToString(ticket.Substring(11, len - 11));
                        string[] arr = kk.Split(new string[] { flag }, StringSplitOptions.RemoveEmptyEntries);
                        bool     isPass = true;
                        int      ledger = 0, uid = 0;
                        if (arr.Count() != 2)
                        {
                            msg    = "Ticket信息错误";
                            isPass = false;
                        }
                        if (isPass == true)
                        {
                            ledger = CommFunc.ConvertDBNullToInt32(arr[0]) - seed;
                            uid    = CommFunc.ConvertDBNullToInt32(arr[1]) - seed;
                            if (ledger <= 0 && uid < 0)
                            {
                                msg    = "Ticket包含错误信息";
                                isPass = false;
                            }
                        }
                        if (isPass == true)
                        {
                            string ccKey = ledger.ToString() + "A" + uid.ToString();
                            string ss    = HttpContext.Current.Request.RawUrl;
                            if (ss.Contains("api/ExpApp/"))
                            {
                                ccKey = ledger.ToString() + "APP" + uid.ToString();
                            }
                            else if (ss.Contains("api/ExpAdminApp/"))
                            {
                                ccKey = ledger.ToString() + "AdminApp" + uid.ToString();
                            }
                            user = HttpRuntime.Cache.Get(ccKey) as CacheUser;
                        }
                        //int seed = CommFunc.ConvertDBNullToInt32(ticket.Substring(10, 3));
                        //int uid = CommFunc.ConvertDBNullToInt32(ticket.Substring(13, 7)) - seed;
                        //user = HttpRuntime.Cache.Get(uid.ToString()) as CacheUser;
                    }
                }
                else
                {
                    msg = "没有Ticket信息";
                }
            }
            //if (user == null && HttpContext.Current.Request.Url.Host.ToLower().Equals("localhost"))
            //{/*本地代码执行*/
            //    user = new CacheUser();
            //    user.Ledger = WebConfig.Ledger;
            //    user.Uid = 1;
            //}
            return(user);
        }