如何自定义oauthauthorizationserverprovider错误信息?

简介: We are using the OAuthAuthorizationServerProvider class to do authorization in our ASP.NET Web Api app.

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
相关文章
被零除的错误
被零除的错误。
91 1
|
SQL 数据库 流计算
出现了 FlinkServerException 或 FlinkSQLException 错误
出现了 FlinkServerException 或 FlinkSQLException 错误
582 1
|
6月前
|
数据采集 移动开发 监控
函数计算操作报错合集之返回时报错:{"ErrorCode":"AccessDenied","ErrorMessage":"unauthorized method 'POST'"},该如何配置
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
107 0
|
7月前
|
网络安全
GetSmartHandleJob服务返回了"RecordNotExist"错误
【1月更文挑战第13天】【1月更文挑战第62篇】GetSmartHandleJob服务返回了"RecordNotExist"错误
36 2
|
7月前
|
网络安全
这个错误信息表明在执行项目时出现了问题
【1月更文挑战第4天】【1月更文挑战第17篇】这个错误信息表明在执行项目时出现了问题
122 1
|
存储 负载均衡 数据库
错误信息 "ErrorCode":"ResourceExhausted"
错误信息 "ErrorCode":"ResourceExhausted"
1866 1
|
C++
VS Code 用户自定义配置推荐 #52
VS Code 用户自定义配置推荐 #52
100 0
|
弹性计算 应用服务中间件 Apache
502 错误
502 错误
974 0
|
索引
错误
错误
236 0