public void CheckFunctions() { // Setup var service = new FuncService<ServiceBase>(() => new ServiceWithNoConstructors()); // Assert Assert.IsNotNull(service.Factories); Assert.AreEqual(1, service.Factories.Length); }
public void CheckType() { // Setup var service = new FuncService<ServiceBase>(() => new ServiceWithNoConstructors()); // Assert Assert.IsNotNull(service.Type); Assert.AreSame(service.Type, typeof (ServiceBase)); }
//public class FuncModel //{ // public string res { get; set; } // public DataTable data { get; set; } //} public void InitTree() { FuncService svr = new FuncService(); var model = svr.GetMenuList(); treeList1.ParentFieldName = "Pid"; treeList1.CustomDrawNodeImages += treeList_CustomDrawNodeImages; treeList1.DataSource = model.data; treeList1.ExpandAll(); }
public override void OnActionExecuting(HttpActionContext actionContext) { try { //日志 IOwinContext ctx = (OwinContext)actionContext.Request.Properties["MS_OwinContext"]; if (ctx != null) { MonitorLog MonLog = new MonitorLog(); MonLog.StartTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff")); MonLog.Controller = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName; MonLog.Action = actionContext.ActionDescriptor.ActionName; MonLog.Url = HttpUtility.UrlDecode(ctx.Request.Uri.AbsoluteUri); MonLog.RequestBody = (string)actionContext.Request.Properties[Constants.Custom_RequestBodyString]; actionContext.Request.Properties.Add(Constants.Custom_LogInfoKey, MonLog); } base.OnActionExecuting(actionContext); ///检查模型合法性 if (actionContext.ModelState.IsValid == false) { actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.BadRequest, actionContext.ModelState); return; } if (actionContext.ActionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any()) { return; } //检查令牌 NameValueCollection nvc = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query); string accessToken = nvc[Constants.AccessToken]; if (string.IsNullOrEmpty(accessToken)) { ApiResultModel result = new ApiResultModel(); result.Status = System.Net.HttpStatusCode.Unauthorized; result.Err = "数据令牌不能为空"; actionContext.Response = actionContext.Request.CreateResponse(result.Status, result); return; } //根据Token获取用户 var user = new TokenService().ValidToken(accessToken); var funcAttr = actionContext.ActionDescriptor.GetCustomAttributes <FuncAttribute>().FirstOrDefault() ?? actionContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes <FuncAttribute>().FirstOrDefault(); if (null != funcAttr)//验证特性标记的权限 { bool isCommon = actionContext.ActionDescriptor.ControllerDescriptor.ControllerType.IsSubclassOf(typeof(BaseController)); FuncService fs = new FuncService(); if (isCommon)//验证通用增删改查控制器的操作权限 { string action = actionContext.ActionDescriptor.ActionName; switch (action.ToLower()) { case "get": fs.ValidUserFunc(user.UserNo, funcAttr.FuncNo, "qry"); break; case "post": fs.ValidUserFunc(user.UserNo, funcAttr.FuncNo, "add"); break; case "put": case "modify": fs.ValidUserFunc(user.UserNo, funcAttr.FuncNo, "mod"); break; case "delete": case "logicdelete": fs.ValidUserFunc(user.UserNo, funcAttr.FuncNo, "del"); break; default: fs.ValidUserFunc(user.UserNo, funcAttr.FuncNo, funcAttr.Action); break; } } else { fs.ValidUserFunc(user.UserNo, funcAttr.FuncNo, funcAttr.Action); } } else//未标记特性则验证管理员权限 { if (!new UserService().IsInRole(user, "admin")) { throw new Exception("未获得授权"); } } } catch (Exception e) { throw e; } }