2016-06-30 16 views
0

GET、PUT、POST、またはDELETEを呼び出すたびに、フィルタメソッドがトリガされないようにユーザーを認証するフィルタを使用してWebAPIを実行しています。 。私はすでに、次のものを言って、多くの回答を読んだことがあるグローバルに登録されているにもかかわらず、C#WebAPIでフィルタが実行されない

    • はActionFilterAttribute

    もを使用しIAuthenticationFilter

  • を使用IAuthorizationFilter
  • を使用します
  • 申し込みコントローラやアクション
  • の上部の属性がに、FilterConfigにフィルタを登録し、それらのすべて試しましたGlobal.asaxの

でグローバルフィルタを登録します。

フィルタ:

namespace CumminsGroup.Filters 
{ 
    public class AuthenticationFilter : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      Console.WriteLine("filterContext"); 
      //use filterContext.HttpContext.Request... 
     } 
    } 
} 

ApiController:

namespace CumminsGroup.Controllers 
{ 
    [EnableCors(origins: "*", headers: "*", methods: "*")] 
    [AuthenticationFilter] 
    public class UserGroupsController : ApiController 
    {   
     // GET: api/Groups 
     public IQueryable<Group> GetGroups() 
     { 
      return db.Groups.Include("GroupUsers").Where(u=>u.status=="active"); 
     } 

に、FilterConfig:

namespace CumminsGroup 
{ 
    public class FilterConfig 
    { 
     public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
     { 
      filters.Add(new AuthenticationFilter()); 
      //filters.Add(new HandleErrorAttribute()); 
     } 
    } 
} 

のGlobal.asax:HTTP要求を行うとき

namespace CumminsGroup 
{ 
    public class WebApiApplication : System.Web.HttpApplication 
    { 
     protected void Application_Start() 
     { 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      AreaRegistration.RegisterAllAreas(); 
      GlobalConfiguration.Configure(WebApiConfig.Register);   
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 
    } 
} 

はさらに、フィルタがskipedれます。 フィルタ関数が呼び出される唯一の瞬間は、プロジェクトを実行するとき、ホームページコントローラの直前です。

私には何が欠けていますか?

答えて

0

MVCフィルターとWebAPIフィルターを区別できますか? "GlobalFilters.Filters"

MVCConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
WebApiConfig.RegisterGlobalFilters(GlobalConfiguration.Configuration.Filters); 
+0

"GlobalConfiguration.Configuration.Filters" 私はMVCの代わりに、WebAPIのからフィルタをインポートした...すでにこの問題を解決!ありがとうございました! –

関連する問題