2
私はこの問題は、私は、認証が失敗したときのJSON repsonseを送りたいですWeb APIコントローラで認証フィルタを使用してjson応答を送信していますか?
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()
{
}
}
以下のように私は、フィルタを定義している私のコントローラで
[ArcGISAuthentication]
を認証フィルタを持っています。上のAuthenticateAsyncのelseステートメントの場合と同じです。
どうすればいいですか?
カスタムエラー結果を作成し、それを 'context.Error'プロパティに設定します。結果として、応答メッセージをJSONに設定するか、コンテンツネゴシエーターが要求ヘッダーに基づいて返すメディアタイプを決定させることができます – Nkosi