私のWebAPIプロジェクトには、[Authorize]
属性で装飾された多数のAPIがあります。
[Authorize]
public HttpResponseMessage GetCustomers()
{
//my api
}
ユーザーに正しいトークンがない場合、アクセス拒否の例外がユーザーに返されます。
しかし、私が必要なのは、そのような場合には、カスタム応答メッセージを返す必要があるということです。
{
"StatusCode" : 403,
"message": "You donot have sufficient permission"
}
認証に失敗した場合にこのカスタムメッセージを返すにはどうすればよいですか。
ご注意ください:
これにはさまざまな方法がありますが、最良の方法の1つはカスタム認証属性です。AuthorizeAttribute
を継承し、HandleUnauthorizedRequest()
メソッドをオーバーライドするだけです。
public class CustomAuthorization : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
actionContext.Response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.Forbidden,
Content = new StringContent("You are unauthorized to access this resource")
};
}
}
そして、これを使用します(CustomAuthorization
の代わりにAuthorize
を使用する必要があります)
[CustomAuthorization]
public IHttpActionResult Get()
{
return Ok();
}
それ以外の場合は、クライアント側でステータスコードをキャッチして、選択したカスタムメッセージを表示することもできます。