【问题标题】:Should a web service (WebApi) know about the location of a calling client?Web 服务 (WebApi) 是否应该知道调用客户端的位置?
【发布时间】:2017-02-12 10:03:54
【问题描述】:

我编写了一个 Web 服务 (WebApi),其中包含我的所有服务逻辑并托管在云中。我的同事使用 Angular.js 编写了该服务的前端部分。

该服务包含安全性,这意味着如果客户端尝试调用 API 并且未经过身份验证或未授权,我们会抛出自定义异常,然后 WebApi 使用异常过滤器 (ExceptionFilterAttribute) 过滤该异常并转放入适当的 HttpResponseMessage。

 new HttpResponseMessage(HttpStatusCode.Unauthorized);

new HttpResponseMessage(HttpStatusCode.Redirect)
{
    RequestMessage = context.Request,
};

在未经授权的特殊情况下,服务说明调用者尚未通过身份验证,我的同事将代码放在过滤器中,然后将调用者重定向到 Angular.js 网站的登录页面,这在我看来是不正确的 -尤其是因为这将服务与 js 网站的知识紧密结合,而不是支持其他客户端平台(例如本机应用程序)。

问题是,将不可知的客户端从 webapi 网站重定向到适当的身份验证门户的正确方法是什么?是否应该从服务中删除重定向逻辑并完全由调用客户端处理?还是我错了,这个逻辑属于服务?

【问题讨论】:

    标签: c# angularjs web-services asp.net-web-api


    【解决方案1】:

    如果您将重定向逻辑放在服务中,则它只能由该特定网站使用。 当网站收到状态码未授权的 HttpResponseMessage 时,该网站应该有自己的逻辑。 这将使您的服务可供其他网站和应用使用。

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2013-10-12
      相关资源
      最近更新 更多