zoukankan      html  css  js  c++  java
  • 如何自定义oauthauthorizationserverprovider错误信息?

    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");
  • 相关阅读:
    numpy—————数组操作
    ML———聚类算法之K-Means
    DataFrame————数据离散化处理(元素定位与离散化处理)
    windows 搭建和配置 hadoop + 踩过的坑
    Pandas -----简述 Series和DataFrame
    numpy 函数和用法总结、示例
    分词————jieba分词(Python)
    (31)本地yum仓库的安装配置
    (30)zookeeper的数据结构
    (29)zookeeper的命令行客户端
  • 原文地址:https://www.cnblogs.com/firstcsharp/p/5953423.html
Copyright © 2011-2022 走看看