我寫了一個Web服務(WebApi),其中包含我所有的服務邏輯,並託管在雲中。我的同事使用Angular.js編寫了此服務的前端部分。Web服務(WebApi)應該知道呼叫客戶端的位置嗎?
該服務包含安全性,這意味着如果客戶端嘗試調用API並且未通過身份驗證或未授權,則會拋出一個自定義異常,然後由WebApi使用異常過濾器(ExceptionFilterAttribute)過濾並變成了一個合適的HttpResponseMessage。
new HttpResponseMessage(HttpStatusCode.Unauthorized);
或
new HttpResponseMessage(HttpStatusCode.Redirect)
{
RequestMessage = context.Request,
};
在未經授權的,服務的特殊情況,指出來電者未通過認證,並在過濾器中,然後重定向呼叫者到登錄頁面,我的同事處代碼Angular.js網站對我來說似乎是不正確的 - 這不僅僅是因爲這將服務與js網站的知識緊密結合,而不是支持其他客戶端平臺(如本機應用程序)。
現在的問題是,將不可知的客戶端從webapi網站重定向到適當的認證門戶的正確方法是什麼?是否應將重定向邏輯從服務中刪除並純粹由呼叫客戶端處理?還是我錯了,這個邏輯屬於服務?