【发布时间】: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