【问题标题】:REST api cacheablity with authorization具有授权的 REST api 可缓存性
【发布时间】:2016-02-21 03:01:16
【问题描述】:

我正在为 Web 应用程序构建受保护的 API。
对于每个 Web 服务调用,客户端都会发送一个访问令牌。
当根据访问令牌调用资源时,它会返回不同的响应。
例如:- 致电 /employees 只会返回可访问的员工。将为每个访问令牌定义可访问性。
我的问题是,如果返回的响应不同,则如何缓存响应取决于访问令牌。
访问令牌是缓存中考虑的请求的一部分吗?
如果 API 不可缓存,它可以是 REST 吗?
REST 中是否允许部分访问资源?

【问题讨论】:

    标签: api rest caching authorization


    【解决方案1】:

    @DamithK 请清除您想要做什么,我没有得到它..“当根据访问令牌调用资源时,它会返回不同的响应。 但据我所知,您想对每个 api 调用进行身份验证。 如果您使用 RestClient 调用 api,您可以按以下方式进行。调用 Api

    var client = new RestClient(Serviceurl);
            var request = new RestRequest("/Apimethod/{Inputs}?oauth_consumer_key=1ece74e1ca9e4befbb1b64daba7c4a24", Method.GET);
            IRestResponse response = client.Execute(request);
    

    为您服务

    public static class Authentication
    {
        public static bool AuthenticateRequest(IncomingWebRequestContext context)
        {
            bool Authenticated = false;
            try
            {
                NameValueCollection param = context.UriTemplateMatch.QueryParameters;
                if (param != null && param["oauth_consumer_key"] != null)
                {
                    string consumerSecretKey = "1ece74e1ca9e4befbb1b64daba7c4a24";
                    Authenticated = param["oauth_consumer_key"] == consumerSecretKey;
                }
                else
                {
                    WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
                }
    
            }
            catch (Exception)
            {
    
            }
            return Authenticated;
        }
    }
    

    在被调用的方法中使用验证每个请求

    Authentication.AuthenticateRequest(WebOperationContext.Current.IncomingRequest)
    

    这都是c#代码

    【讨论】:

    • 感谢您的回答。我的问题不在于身份验证,而在于授权。不同的访问令牌将具有不同的权限。因此响应可能不会返回某些访问令牌的完整员工列表。只有可访问的员工才会被退回。
    • 表示您要使用令牌过滤员工列表。这取决于您希望如何实现该逻辑。据我所知,您可以做什么将所有令牌存储到数据库中并将每个员工映射到特定令牌以及何时您在请求中获得该令牌,您可以根据令牌过滤员工。如果您有任何想法,请告诉我。
    猜你喜欢
    • 2015-12-10
    • 2015-11-16
    • 1970-01-01
    • 2019-01-16
    • 2019-07-05
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多