public class CustomAuthorizeAttribute : AuthorizationFilterAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return true;// if my current user is authorised
}
}
上記は私のCustomAuthorizeAttributeクラスであり、
[CustomAuthorize] // both [CustomAuthorize] and [CustomAuthorizeAttribute ] I tried
public class ProfileController : ApiController
{
//My Code..
}
私が電話しているとき
http://localhost:1142/api/Profile
CustomAuthorizeAttribute
を起動していません
My FilterConfigクラスの詳細は以下のようになります
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomAuthorizeAttribute());
}
}
私が何かを見逃したら助けてください。
HttpContextBase
を使用するため、サンプルで検出できます。代わりに、System.Web.Http.Filters
名前空間。Web APIフィルターコード: https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Http/Filters/AuthorizationFilterAttribute.cs
カスタム属性はSystem.Web.Http.Filters.AuthorizationFilterAttributeから継承する必要があります
そして、それはこのように見えるはずです
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
public class CustomAuthorizeAttribute : System.Web.Http.Filters.AuthorizationFilterAttribute
{
public override bool AllowMultiple
{
get { return false; }
}
public override void OnAuthorization(HttpActionContext actionContext)
{
//Perform your logic here
base.OnAuthorization(actionContext);
}
}
これで試してみてください。
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
return true;
}
}
System.Web.Http.Filters.AuthorizationFilterAttribute
から継承した他の回答に追加するには、これをOnAuthorization
メソッドに追加して、ユーザーがログインしたことを確認します。
if (!actionContext.RequestContext.Principal.Identity.IsAuthenticated)
{
// or whatever sort you want to do to end the execution of the request
throw new HttpException(403, "Forbidden");
}