2009-02-20 5 views
0

Я пытаюсь обрабатывать авторизацию в приложении MVC с помощью виндзор-IInterceptor - потому что это похоже на то, что я могу получить доступ к параметрам именованного доступа к параметрам, которые передаются, что важно для определения того, у пользователя есть доступ.Доступ к действию через Windsor IInterceptor

Из моего метода перехвата мне нужен доступ к вызываемому действию. Я понял, как получить имя контроллера и действия (через RequestContext), но не фактический метод - любые хорошие идеи?

В качестве эталона это примерно как код выглядит как:

public class AuthorizationInterceptor : IInterceptor 
{ 
    public void Intercept(IInvocation invocation) 
    { 
     if (invocation.Arguments != null && invocation.Arguments.Length > 0 && invocation.Arguments[0] != null) 
     { 
      if (invocation.Arguments[0].GetType() == typeof(RequestContext)) 
      { 
       var context = (RequestContext)invocation.Arguments[0]; 
       var values = context.RouteData.Values; 

       if (!auth.Authorize(values, HttpContext.Current.User)) 
       { 
        //RedirectToLogin     } 
      } 
     } 

     invocation.Proceed(); 
    } 
} 

ответ

0

invocation.Method дает перехваченной метод, но я думаю, вы бы лучше использовать в ActionFilter вместо этого.

Смежные вопросы