J'ai un filtre d'authentification dans mon contrôleurEnvoi d'une réponse json à l'aide du filtre d'authentification dans le contrôleur Web API?
[ArcGISAuthentication]
J'ai défini le filtre comme ci-dessous
public class ArcGISAuthenticationAttribute : Attribute, IAuthenticationFilter
{
public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
{
return Task.Run(async() =>
{
var queryParameters = HttpUtility.ParseQueryString(context.Request.RequestUri.Query);
var token = queryParameters["token"];
if (!string.IsNullOrWhiteSpace(token))
{
var userInfo = await CommunityManager.GetUserInfoAsync(token);
context.Principal = new ArcGISUserPrincipal(userInfo, token);
context.Request.SetUserPrincipal(context.Principal);
}
else{
//What shoudld I do here to send a json response
}
});
}
public Task ChallengeAsync(HttpAuthenticationChallengeContext context, CancellationToken cancellationToken)
{
return Task.Run(() => { });
}
public ArcGISAuthenticationAttribute()
{
}
}
Le problème est que je veux envoyer un repsonse JSON lorsque l'authentification échouent. Comme dans l'instruction else dans AuthenticateAsync ci-dessus.
Comment est-ce que je peux faire ceci?
Créez un résultat d'erreur personnalisé et définissez-le sur la propriété 'context.Error'. Dans le résultat, vous pouvez définir le message de réponse à JSON ou laisser le négociateur de contenu déterminer quel type de média à renvoyer en fonction des en-têtes de requête – Nkosi