0
GET、PUT、POST、またはDELETEを呼び出すたびに、フィルタメソッドがトリガされないようにユーザーを認証するフィルタを使用してWebAPIを実行しています。 。私はすでに、次のものを言って、多くの回答を読んだことがあるグローバルに登録されているにもかかわらず、C#WebAPIでフィルタが実行されない
:
-
:
- はActionFilterAttribute
- を使用IAuthorizationFilter
- を使用します
- 申し込みコントローラやアクション
- の上部の属性がに、FilterConfigにフィルタを登録し、それらのすべて試しましたGlobal.asaxの
-
を
もを使用しIAuthenticationFilter
でグローバルフィルタを登録します。
フィルタ:
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れます。 フィルタ関数が呼び出される唯一の瞬間は、プロジェクトを実行するとき、ホームページコントローラの直前です。
私には何が欠けていますか?
対
"GlobalConfiguration.Configuration.Filters" 私はMVCの代わりに、WebAPIのからフィルタをインポートした...すでにこの問題を解決!ありがとうございました! –