protected bool IsAuthorized() { // 验证token //var token = actionContext.Request.Headers.Authorization; var token = Request["token"]; //var ts = actionContext.Request.Headers.Where(c => c.Key.ToLower() == "token").FirstOrDefault().Value; if (!string.IsNullOrWhiteSpace(token)) { // 验证token if (!UserTokenManager.IsExistToken(token)) { return(false); } PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); //把 QueryString 属性改为可读写 isreadonly.SetValue(HttpContext.Request.QueryString, false, null); Request.QueryString.Add("MYORGANID", UserTokenManager.GetUserOrganId(token)); return(true); } return(false); }
/// <summary> /// 获取页面数据并转换成指定的实体。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="minValuePINum">最小有值字段数,若有值字段的数量小于该数字,将返回null</param> /// <returns></returns> public T GetPageData <T>(int minValuePINum = 2) { if (typeof(System.Web.Mvc.Filter).IsAssignableFrom(typeof(T)))//判断T是否继承了Filter { minValuePINum = -1; } T _t = (T)Activator.CreateInstance(typeof(T)); PropertyInfo[] propertys = _t.GetType().GetProperties(); int haveValuePINum = 0; foreach (PropertyInfo pi in propertys) { string name = pi.Name; //如果参数是文件 if (pi.GetCustomAttribute <FieldTypeAttribute>() != null && pi.GetCustomAttribute <FieldTypeAttribute>().fieldType == FieldTypeEnum.File) { if (Request.Files[name] != null && Request.Files[name].ContentLength > 10) { //do save file string PostFileName = Request.Files[name].FileName; string FileName = DateTime.Now.ToFileTime() + PostFileName.Substring(PostFileName.LastIndexOf(".")); string SavePath = "/UserFiles/" + DateTime.Now.ToString("yyyy-MM-dd") + "/"; if (!Directory.Exists(Request.MapPath(SavePath))) { Directory.CreateDirectory(Request.MapPath(SavePath)); } Request.Files[name].SaveAs(Request.MapPath(SavePath + FileName)); pi.SetValue(_t, SavePath + FileName); haveValuePINum++; } } else if (pi.GetCustomAttribute <FieldTypeAttribute>() != null && pi.GetCustomAttribute <FieldTypeAttribute>().fieldType == FieldTypeEnum.Ignore) { } else { if (Request[name] != null) { if (pi.PropertyType.FullName.ToLower().Contains("datetime")) { DateTime iTemp = DateTime.Now; if (DateTime.TryParse(Request[name], out iTemp)) { pi.SetValue(_t, iTemp); } } else if (pi.PropertyType.FullName.ToLower().Contains("int")) { int iTemp = 0; if (int.TryParse(Request[name], out iTemp)) { pi.SetValue(_t, iTemp); } } else if (pi.PropertyType.FullName.ToLower().Contains("decimal")) { decimal iTemp = 0; if (decimal.TryParse(Request[name], out iTemp)) { pi.SetValue(_t, iTemp); } } else if (pi.PropertyType.FullName.ToLower().Contains("double")) { double iTemp = 0; if (double.TryParse(Request[name], out iTemp)) { pi.SetValue(_t, iTemp); } } else if (pi.PropertyType.FullName.ToLower().Contains("byte")) { byte iTemp = 0; if (byte.TryParse(Request[name], out iTemp)) { pi.SetValue(_t, iTemp); } } else if (pi.PropertyType.FullName.ToLower().Contains("bool")) { bool iTemp = false; if (bool.TryParse(Request[name], out iTemp)) { pi.SetValue(_t, iTemp); } } else { pi.SetValue(_t, Request[name]); } haveValuePINum++; } else if (name == "CreateTime" || name == "ModifyTime" || name == "UpdateTime") { pi.SetValue(_t, DateTime.Now); } else if (name == "Creator" || name == "Updater") { pi.SetValue(_t, UserTokenManager.GetUId(Request["token"])); } else if (name.ToUpper() == "ORGANID") { pi.SetValue(_t, Request["MYORGANID"]); } } } if (haveValuePINum <= minValuePINum) { return(default(T)); } return(_t); }