Attualmente sto sviluppando un'API Web utilizzando il tipo di progetto API Web MVC 4. Sono attualmente in una fase in cui ho bisogno di aggiungere un po 'di sicurezza all'API. Sono a conoscenza dell'attributo Authorize, tuttavia, il cliente preferirebbe un approccio diverso. Per questo ho provato a sovrascrivere l'attributo Authorize nella mia classe e come inizio base ho semplicemente che AuthorizeCore restituisce sempre false che dovrebbero significare non autentificate. Se poi lo aggiungo a un'azione in un controller, l'azione viene sempre completata e recupero sempre i dati. Credo che il motivo potrebbe essere dovuto al fatto che l'attributo personalizzato non è stato registrato nel file web.config, tuttavia, non sono sicuro su come procedere quando non si utilizza l'autenticazione dei moduli.Utilizzo dell'autorizzazione personalizzata in MVC 4
Il codice che sto usando per testare è un nuovo progetto di API Web MVC 4 con l'attributo personalizzato mostrato di seguito.
public class Auth : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("http://www.google.com");
}
}
Ho poi aggiunto l'attributo sul metodo Get del difetto ValuesController come tale
[Auth]
public IEnumerable<string> Get()
Tuttavia, quando ci si dirige verso dominio/API/Valori io sono sempre presentati con i dati, invece di l'atteso reindirizzamento a google. Qualsiasi aiuto è apprezzato.
Edit: Dopo aver cercato un po 'di più ho trovato questo qui: http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way.aspx Questo suggerisce che ho scelto la classe AuthorizeAttribute sbagliato sbagliato, come avevo scelto quello da System.Web.Mvc piuttosto che quello da System.Web.Http . Sembra che la versione Http non consenta lo stesso livello di configurazione della versione MVC in quanto non mi consente di scavalcare AuthorizeCore. Qualsiasi altro aiuto su questo è apprezzato.
Non penso che abbia qualcosa a che fare con la classe AuthorizeAttribute sbagliata. Metti un breakpoint sul "return false;" dichiarazione, eseguire in modalità di debug e vedere se si colpisce quella dichiarazione. – Turnkey
Ho provato questo e il punto di interruzione non viene colpito affatto. Ciò corrisponde al comportamento menzionato nel collegamento che nulla sarebbe accaduto se fosse stato usato l'attributo sbagliato. – bruinbrown
Sì, sembra una differenza di comportamento in WebApi rispetto a MVC. – Turnkey