ASP.NET Web API 전역 권한 및 전역 이상 처리

4896 단어 asp.net
개발 중 에 저 는 json 형식 을 사용 하여 직렬 화 되 었 기 때문에 기본 xml 직렬 화 를 제거 합 니 다.
public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {

            // ...



            var json = config.Formatters.JsonFormatter;

            //   json           

            json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

            //   XML    

            config.Formatters.Remove(config.Formatters.XmlFormatter);

        }

    }

전역 권한 검증 필터
Authorization FilterAttribute 에서 새 클래스 를 계승 합 니 다.권한 검증 을 할 때 이 방법 을 사용 하여 권한 을 검증 하 는 가상 방법 이 있 습 니 다.
 
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]

    public class WebApiAuthAttribute : AuthorizationFilterAttribute

    {

        public override void OnAuthorization(HttpActionContext actionContext)

        {

            //         ,   ASP.NET Forms     

            var context = HttpContext.Current;

            if (context.User.Identity.IsAuthenticated == false)

            {

                PreUnauthorized(actionContext);

                return;

            }

        }



        private void PreUnauthorized(HttpActionContext actionContext) 

        {

            //         ,          Model

            actionContext.Response = actionContext.Request.CreateResponse(

                HttpStatusCode.OK,

                new AjaxModel

                {

                    StatusCode = AjaxStatusCode.Unauthorized,

                    Message = "         "

                });

        }

    }

마지막 으로 WebApiconfig 에 필 터 를 추가 하기 만 하면 됩 니 다.
config.Filters.Add(new WebApiAuthAttribute());

현재 모든 요청 이 권한 을 검증 합 니 다.
 
전역 이상 필터
Exception FilterAttribute 에서 새 클래스 를 계승 합 니 다.마찬가지 로 하나의 가상 방법 인 OnException 이 있 습 니 다.이 방법 을 다시 써 서 이상 을 처리 합 니 다.
public override void OnException(HttpActionExecutedContext actionExecutedContext)

        {

            Logger.Error(actionExecutedContext.Exception);

            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(

                HttpStatusCode.OK,

                new AjaxModel

                {

                    StatusCode = AjaxStatusCode.InternalServerError,

                    Message = actionExecutedContext.Exception.Message

                });

        }

마지막 으로 WebApiconfig 에 필 터 를 추가 하기 만 하면 됩 니 다.
config.Filters.Add(new WebApiErrorHandleAttribute());

좋은 웹페이지 즐겨찾기