Ninject의 BindFilter<>
구문을 사용하여 적용하려고하는 필터가 두 개 있으며 종속성 삽입을 성공적으로 적용하고 있습니다. 문제는 현재 사용자가 누구인지 분류하고 InRequestScope
을 바인드하고 유지 관리 권한을 확인할 때 두 번째 전에 실행해야한다는 것입니다. 그렇지 않으면 어떤 사용자를 참조하는지 알지 못합니다.Ninject Authorization vs Action 필터 바인딩 순서
NinjectWebCommon.cs
바인딩 필터는 다음과 같습니다
kernel.BindFilter<CurrentUserFilter>(FilterScope.Global, 0).InRequestScope();
kernel.BindFilter<SetupRightsAttribute>(FilterScope.Controller, 1).WhenControllerType<MaintenanceController>().InRequestScope();
; 다른 모든 것은 단지 첫 번째 것입니다.이 방법은 두 번째 방법은 내 유지 관리 컨트롤러에서 무언가를 탐색 할 때만 사용됩니다. 와 -
2 개 개의 필터
은 같은 (제외 관련성이없는 세부 사항)public class CurrentUserFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
// implementation - breakpoint 1
}
public class SetupRightsAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
// implementation - breakpoint 2
}
내가 기대하고있어
중단 한 히트 후 2 브레이크 포인트하지만 어떤 이유로 처음 항상 중단 2의 수에 관한 선언 이 시점에서 사용자를 알지 못하기 때문에 권한이 없다고 알려줍니다.
FilterScope 및 순서 설정의 많은 다른 순열을 시도했지만 다른 순서로 묶어도 작동하지만 아무 것도 작동하지 않습니다 ... 무엇을 잘못하고 있습니까?
감사합니다. Remo, 나는 그것을 action 필터로 바꿀 것입니다. – DavidJones