如何自定义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
相关文章
|
6月前
|
存储 数据库
第二章 一般错误信息 - 错误代码 100 到 199
第二章 一般错误信息 - 错误代码 100 到 199
54 0
|
5月前
|
数据采集 移动开发 监控
函数计算操作报错合集之返回时报错:{"ErrorCode":"AccessDenied","ErrorMessage":"unauthorized method 'POST'"},该如何配置
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
5月前
|
Devops 网络安全 Go
阿里云云效操作报错合集之遇到错误代码:SYSTEM_FORBIDDEN_ERROR,状态码为403,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
数据库 数据安全/隐私保护
第一章 一般错误信息 - 错误代码 0 到 99
第一章 一般错误信息 - 错误代码 0 到 99
44 0
|
6月前
|
网络安全
GetSmartHandleJob服务返回了"RecordNotExist"错误
【1月更文挑战第13天】【1月更文挑战第62篇】GetSmartHandleJob服务返回了"RecordNotExist"错误
34 2
|
6月前
|
网络安全
这个错误信息表明在执行项目时出现了问题
【1月更文挑战第4天】【1月更文挑战第17篇】这个错误信息表明在执行项目时出现了问题
98 1
|
弹性计算 应用服务中间件 Apache
502 错误
502 错误
958 0
|
应用服务中间件 PHP nginx