Example #1
0
        public void CheckFunctions()
        {
            // Setup
            var service = new FuncService<ServiceBase>(() => new ServiceWithNoConstructors());

            // Assert
            Assert.IsNotNull(service.Factories);
            Assert.AreEqual(1, service.Factories.Length);
        }
Example #2
0
        public void CheckType()
        {
            // Setup
            var service = new FuncService<ServiceBase>(() => new ServiceWithNoConstructors());

            // Assert
            Assert.IsNotNull(service.Type);
            Assert.AreSame(service.Type, typeof (ServiceBase));
        }
Example #3
0
        //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();
        }
Example #4
0
        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;
            }
        }