Vorrei utilizzare AllowAnonymous
e un numero personalizzato AuthenticationFilter
. Qualcuno può indicarmi la direzione giusta per utilizzare AllowAnonymous
o un'altra alternativa? GrazieCustom IAuthenticationFilter e AllowAnonymous in Web API
Ho creato il mio filtro personalizzato che eredita da System.Attribute
e realizza System.Web.Http.Filters.IAuthenticationFilter
public class MyCustomAuthenticationAttribute : Attribute, IAuthenticationFilter
sono stato in grado di aggiungere con successo la logica per il metodo AuthenticateAsync
public async Task AuthenticateAsync(
HttpAuthenticationContext context,
CancellationToken cancellationToken) {}
Il mio problema è che ho bisogno di ignorare alcune azioni o controller del mio controller API Web. Ho pensato che potrei usare System.Web.Http.AllowAnonymousAttribute
per fare questo. Ad esempio, ecco un esempio molto semplice che mostra l'intento.
[MyCustomAuthentication]
public class HomeController : ApiController
{
// no authentication needed allow anonymous
[HttpGet]
[Route("hianonymous")]
[AllowAnonymous]
public IHttpActionResult Hello(string name) {
return Ok(new { message = "hello " + name });
}
// needs to be authenticated
[HttpGet]
[Route("hiauthenticated")]
public IHttpActionResult Hello() {
var name = User.Identity.Name;
return Ok(new { message = "hello authenticated user " + name });
}
}
Il problema è che è ancora Authenticate()
chiamati MyCustomAuthenticationAttribute
. Vorrei usare AllowAnonymous
o qualche altro metodo per realizzare questo. Grazie per qualsiasi input.
So che posso utilizzare il mio attributo di autenticazione personalizzato a livello di azione e non a livello di controller ma ci sono casi in cui vorrei un intero controller o anche un filtro globale, quindi devo essere in grado di escludere su una singola azione o base del controller.
Per riferimento ho utilizzato l'esempio sul sito asp.net [Filtri di autenticazione in ASP.NET Web API 2] (http://www.asp.net/web-api/overview/security/authentication-filters) per ottenere iniziato su questo. – Scott