本文共 1807 字,大约阅读时间需要 6 分钟。
We are using the OAuthAuthorizationServerProvider
class to do authorization in our ASP.NET Web Api app.
If the provided username and password is invalid in GrantResourceOwnerCredentials
, the call
context.SetError( "invalid_grant", "The user name or password is incorrect." );
Produces the following Json result:
{ "error": "invalid_grant", "error_description": "The user name or password is incorrect."}
Is there any way to customize this error result?
I would like to make it consistent with default error message format used in other parts of the API:{ "message": "Some error occurred."}
Is this possible to achieve with the OAuthAuthorizationServerProvider
?
2016年10月12日24分24秒
This is how I did it.
string jsonString = "{\"message\": \"Some error occurred.\"}";// This is just a work around to overcome an unknown internal bug. // In future releases of Owin, you may remove this.context.SetError(new string(' ',jsonString.Length-12)); context.Response.StatusCode = 400;context.Response.Write(jsonString);
2016年10月11日24分24秒
+1 for Dasun's answer. Here is how I extended it a bit further.
public class ErrorMessage{ public ErrorMessage(string message) { Message = message; } public string Message { get; private set; }}public static class ContextHelper{ public static void SetCustomError(this OAuthGrantResourceOwnerCredentialsContext context, string errorMessage) { var json = new ErrorMessage(errorMessage).ToJsonString(); context.SetError(json); context.Response.Write(json); }}
The .ToJsonString() is another extension method that uses the Newtonsoft.Json library.
public static string ToJsonString(this object obj) { return JsonConvert.SerializeObject(obj); }
Usage:
context.SetCustomError("something went wrong");学习交流群:364976091
转载地址:http://yyiea.baihongyu.com/