public class CustomAuthorizeAttribute : AuthorizationFilterAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return true;// if my current user is authorised
}
}
Ci-dessus est ma classe CustomAuthorizeAttribute et
[CustomAuthorize] // both [CustomAuthorize] and [CustomAuthorizeAttribute ] I tried
public class ProfileController : ApiController
{
//My Code..
}
Quand j'appelle
http://localhost:1142/api/Profile
Il ne tire pas CustomAuthorizeAttribute
Plus sur ma classe FilterConfig est comme ci-dessous
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomAuthorizeAttribute());
}
}
S'il vous plaît, aidez-moi si je manque quelque chose.
HttpContextBase
. Utilisez plutôt le filtre du System.Web.Http.Filters
espace de noms.Code de filtre de l'API Web: https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Http/Filters/AuthorizationFilterAttribute.cs
Votre attribut personnalisé doit hériter de System.Web.Http.Filters.AuthorizationFilterAttribute
et ça devrait ressembler à ça
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);
}
}
Essayez avec ça.
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
return true;
}
}
Pour ajouter aux autres réponses que vous avez héritées de System.Web.Http.Filters.AuthorizationFilterAttribute
, J'ai mis ceci dans ma méthode OnAuthorization
pour m'assurer que l'utilisateur était connecté:
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");
}