MVC의 작업 필터 [예제를 포함하는 필터 유형]

게시 됨: 2021-03-04

목차

ASP.NET MVC – 작업 필터

MVC(Model-View-Controller) 필터에서는 MVC Framework 요청 처리의 다른 기능 또는 논리에 따라 추가 논리를 사용합니다.

MVC 필터는 권한 부여, 로깅 및 캐싱과 같은 다양한 수준에 대한 프로세스를 구현합니다.

우리는 비즈니스 로직에 따라 수정을 수행하기 위해 컨트롤러 액션 메소드에 구현할 수 있는 속성으로 액션 필터를 고려할 수 있습니다.

시스템에서 MVC 필터를 고려할 수 있습니다. 속성은 클래스, 메서드, 속성 및 필드로 정의됩니다.

더 읽어보기: MVC 프로젝트

ASP.NET MVC 프레임워크는 다양한 작업 필터를 통합합니다.

권한 부여 : 이 작업 필터에는 특정 사용자 역할에 대한 액세스를 제한하는 기능이 있습니다.

OutputCache : 액션 필터로 컨트롤러 액션 메소드의 결과를 정의된 시간에 캐싱합니다.

HandleError : 이 컨트롤러 작업이 실행될 때 코드가 실패하는 경우 특정 시나리오에서 오류를 처리합니다. 사용자 지정 작업 필터를 만들 수 있습니다.

예를 들어 사용자 지정 인증 시스템을 실행하기 위해 사용자 지정 작업 필터를 만들 수 있습니다.

원천

요청 및 응답 수명 주기 흐름의 필터 파이프라인:

원천

필터는 코드에서 논리를 구현하는 두 가지 범주를 제공하며 서로 다른 인터페이스 정의를 수행합니다.

  1. 동기
  2. 비동기

동기 필터

동기화 필터에서는 파이프라인이 처리될 때 파이프라인 전후에 코드를 실행할 수 있습니다. OnStageExecuting OnStageExecuted 작업 메서드 로 간주할 수 있습니다 .

비동기 필터

비동기 필터는 다음과 같은 방법이 있는 단일 방법으로 설명됩니다.

  • OnActionExecuting
  • 실행된 동작
  • OnActionExecutionAsync

아래 코드 스니펫 은 선언 유형입니다.

공개 클래스 TimestampFilter : IActionFilter, IAsyncActionFilter

{

공개 무효 OnActionExecuting (ActionExecutingContext 컨텍스트)

{

context.ActionDescriptor.RouteValues[“타임스탬프”] = DateTime.Now.ToString();

}

공개 무효 OnActionExecuted (ActionExecutedContext 컨텍스트)

{

var ts = DateTime.Parse(context.ActionDescriptor.RouteValues[“타임스탬프”]).AddHours(1).ToString();

context.HttpContext.Response.Headers[“X-EXPIRY-TIMESTAMP”] = ts;

}

공용 비동기 작업 OnActionExecutionAsync (ActionExecutingContext 컨텍스트, ActionExecutionDelegate 다음)

{

this.OnActionExecuting(컨텍스트);

var resultContext = 다음()을 기다립니다.

this.OnActionExecuted(결과 컨텍스트);

}

}

MVC의 작업 필터 유형

ASP.NET MVC 프레임워크는 다양한 필터를 유지 관리합니다.

권한 부여 필터: IAuthorisationFilter 특성을 실행합니다.

작업 필터: IActionFilter 특성을 수행합니다.

결과 필터 : IResultFilter 특성을 실행합니다.

예외 필터: IExceptionFilter 특성을 실행합니다.

권한 부여 필터

사용자의 접근성을 위해 사용할 수 있으며 컨트롤러에서 작업 메서드를 구현하기 전에 선언할 수 있습니다.

Authorization Filter는 Authorize 및 AllowAnonymous와 같은 두 가지 기본 제공 속성을 활성화합니다.

비즈니스 요구 사항에 따라 코드의 사용자 정의 논리에서 이를 사용할 수 있습니다.

아래 코드 스니펫은 인증 필터의 예입니다.

[승인]

공개 ActionResult SecureMethod()

{

반환 보기();

}

[익명 허용]

공개 ActionResult NonSecureMethod()

{

반환 보기();

}

공개 ActionResult SecureMethod()

{

반환 보기();

}

작업 필터

Action 메서드를 수행하기 전과 이후에 Action 필터를 설명할 수 있습니다.

두 가지 유형의 메소드를 보유합니다.

  1. 실행된 동작
  2. OnActionExecuting

아래 코드 스니펫은 작업 필터의 예입니다.

시스템 사용;

System.Collections.Generic 사용;

System.Linq를 사용하여;

System.Web을 사용하여;

System.Web.Mvc 사용;

네임스페이스 TutorialActionFilter.Filters

{

공개 클래스 Myactionfilter : FilterAttribute,IActionFilter

{

공개 무효 OnActionExecuted (ActionExecutedContext 필터 컨텍스트)

{

if (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult("/홈/인덱스");

}

또 다른

{

filterContext.Result = newRedirectResult("/로그인/로그인");

}

}

공개 무효 OnActionExecuting (ActionExecutingContext filterContext)

{

if (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult("/홈/인덱스");

}

또 다른

{

filterContext.Result = newRedirectResult("/로그인/로그인");

}

}

}

}

[튜토리얼 액션 필터]

[AcceptVerbs(HttpVerbs.Get)]

공개 ActionResult GetPerson()

{

사람 p = 새로운 사람();

반환 보기("사람",p);

}

결과 필터

Action Method를 수행하기 전과 Action Method가 수행된 후에 Action 필터를 설명할 수 있습니다.

두 가지 유형의 메소드를 보유합니다.

  1. 결과 실행됨
  2. 결과 실행 중

아래 코드 스니펫은 결과 필터의 예입니다.

시스템 사용;

System.Collections.Generic 사용;

System.Linq를 사용하여;

System.Web을 사용하여;

System.Web.Mvc 사용;

네임스페이스 ResultFilter.Filters

{

공개 클래스 MyResultfilter : FilterAttribute,IResultFilter

{

공개 무효 OnResultExecuted(ResultExecutedContext 필터 컨텍스트)

{

if (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult("/홈/연락처");

}

또 다른

{

filterContext.Result = newRedirectResult(“/로그인/로그인”);

}

}

공개 무효 OnResultExecuting (ResultExecutingContext 필터 컨텍스트)

{

if (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult("/홈/연락처");

}

또 다른

{

filterContext.Result = newRedirectResult(“/로그인/로그인”);

}

}

}

}

[내 결과 필터]

[AcceptVerbs(HttpVerbs.Get)]

공개 ActionResult GetPerson()

{

사람 p = newPerson();

return View("사람",p);

}

예외 필터

컨트롤러나 액션 메소드가 예외를 던질 때 이것을 사용할 수 있습니다.

이 예외 필터는 예외를 포착하는 데 중요합니다.

다음은 예외 필터를 사용하는 코드 스니펫입니다.

시스템 사용;

System.Collections.Generic 사용;

System.Linq를 사용하여;

System.Web을 사용하여;

System.Web.Mvc 사용;

네임스페이스 ExceptionFilter.Filters

{

공개 클래스 MyExceptionFilter : FilterAttribute, IExceptionFilter

{

공개 무효 OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = "ExceptionFilter 필터가 호출되었습니다.";

filterContext.HttpContext.Response.Write("ExceptionFilter 필터 호출");

}

}

}

[내 예외 필터]

공개 클래스 HomeController : 컨트롤러

{

[AcceptVerbs(HttpVerbs.Get)]

공개 ActionResult GetPerson()

{

사람 p = newPerson();

반환 보기("사람",p);

}

}

또한 읽기: Java MVC 프로젝트

세계 최고의 대학에서 온라인으로 소프트웨어 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

이 기사가 MVC의 작업 필터를 이해하는 데 도움이 되었기를 바랍니다.

전체 스택 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 PG 프로그램을 확인하십시오. 이 프로그램은 일하는 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9개 이상의 프로젝트 및 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

프로그래밍에서 데이터 구조는 무엇입니까?

데이터 구조는 프로그램에서 데이터를 정렬하는 방식입니다. 가장 중요한 두 가지 데이터 구조는 배열과 연결 목록입니다. 배열은 가장 친숙한 데이터 구조이며 가장 이해하기 쉽습니다. 배열은 기본적으로 관련 항목의 번호가 매겨진 목록입니다. 그들은 이해하고 사용하기 쉽지만 많은 양의 데이터로 작업할 때는 그다지 효율적이지 않습니다. 연결 목록은 더 복잡하지만 적절하게 사용하면 매우 효율적일 수 있습니다. 큰 목록 중간에 항목을 추가하거나 제거해야 하거나 큰 목록에서 항목을 검색해야 할 때 좋은 선택입니다.

연결 목록과 배열의 차이점은 무엇입니까?

배열에서 인덱스는 요소에 액세스하는 데 사용됩니다. 배열의 요소는 순차적으로 구성되어 인덱스를 사용하는 경우 요소에 쉽게 액세스하고 수정할 수 있습니다. 배열의 크기도 고정되어 있습니다. 요소는 생성 시 할당됩니다. 연결 목록에서 포인터는 요소에 액세스하는 데 사용됩니다. 연결 목록의 요소는 반드시 순차적으로 저장되지 않습니다. 연결 목록은 생성 당시 노드를 포함할 수 있으므로 크기를 알 수 없습니다. 포인터는 요소에 액세스하는 데 사용되므로 메모리 할당이 더 쉽습니다.

C에서 포인터란?

포인터는 모든 변수 또는 함수의 주소를 저장하는 C의 데이터 유형입니다. 일반적으로 다른 메모리 위치에 대한 참조로 사용됩니다. 포인터는 배열, 구조, 함수 또는 기타 유형의 메모리 주소를 보유할 수 있습니다. C는 포인터를 사용하여 함수에 값을 전달하고 함수에서 값을 받습니다. 포인터는 메모리 공간을 동적으로 할당하는 데 사용됩니다.