2016-10-04 39 views
0

我寫了一個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網站重定向到適當的認證門戶的正確方法是什麼?是否應將重定向邏輯從服務中刪除並純粹由呼叫客戶端處理?還是我錯了,這個邏輯屬於服務?

回答

0

如果你把重定向邏輯放在服務中,它只能被這個特定的網站使用。 當網站收到狀態碼未經授權的HttpResponseMessage時,網站應該有自己的邏輯。 這將使您的服務可以被其他網站和應用程序使用。