2012-09-27 2 views
3

내 응용 프로그램에 일부 인증 메커니즘을 구현해야합니다. 권한 부여는 클라이언트에서 서버로 전송되는 객체를 기반으로합니다. 컨트롤러의 모든 동작은 인수 목록으로 사용됩니다. 이 목록에있는 개체의 중첩 된 속성을 기반으로 컨트롤러 동작에 대한 액세스 권한을 부여하거나 거부해야합니다. 나를 보낸 객체의 모든 관련 재산의 가치를 얻을 수 있도록 내 첫 번째 방법 때문에 요청이 JSON 요청이 있다는 사실,권한 부여를위한 ActionFilterAttribute

public class CustomAuthAttribute : FilterAttribute,IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     //SOME LOGIC HERE 
    } 
} 

그러나 사용자 정의 필터 속성을 사용했다, 내가에만 액세서가 (어렵다 json 값). 그래서 FilterAttribute 대신 ActionFilterAttribute를 사용할 수 있다고 생각했습니다.

public class ActionFilterAuthorization: ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 

     var castedList = filterContext.ActionParameters["key"] as List<MyObject>; 
     //logic here 

     //throw exception is access is not granted 

    } 
} 

인증이 적합한 해결책인가요? 행동의 승인을 확인하는 것이 더 좋을까요 ??

답변

0

보안은 cross cutting concern이므로 필터 및 속성은 이상적인 장소입니다. 모든 작업에서 수동으로 확인하면 관리해야하는 많은 추가 코드가 추가되고 잊어 버리면 보안 위험에 추가됩니다. 필터를 전역 필터로 만들면 항상 적용될 수 있습니다. 즉, 필요하지 않은 경우 Action/Controller를 면제 한 속성을 작성할 수 있습니다. AllowAnnoymous 등 enter link description here.

MVC3에서 발견 된 보안에 관한 가장 일반적인 기사는 이쪽 http://www.codeproject.com/Articles/288631/Secure-ASP-NET-MVC3-applications

관련 문제