2012-06-18 39 views
0

MVC應用程序我有一個MVC應用程序,我讓企業登錄使用 https://storea.mydomain.comhttps://storeb.mydomain.com等等等等確保使用子域名

商家的每個人都有創建的用戶和我有業務ID匹配僱員表。我試圖鎖定應用程序,因此經過身份驗證的businessA用戶無法從BusinessB獲取信息。

哪裏是我最好的地方是檢查用戶被允許訪問子域?我是否重寫OnActionExecuted動作,檢查子域是什麼,然後查看會話值以查看它們是否匹配,如果不同則將它們註銷。

還是這有一個更優雅的方式來做到這一點?

有關最佳實踐的建議和建議將非常棒!謝謝

回答

1

自定義Authorize屬性似乎是一個很好的執行此操作的地方。您可以覆蓋AuthorizeCore方法,您將有權訪問HttpContext,並且您將能夠根據子域執行自定義授權邏輯。

0

據我所知,您的MVC應用程序使用單個數據庫來存儲所有企業的信息。這就是爲什麼你會擔心Bussines A獲得Bussines B的信息。

對我來說,您的數據庫是檢查哪些信息可以訪問每個用戶的地方,具體取決於他們所屬的業務。

我認爲你甚至不需要爲此使用子域。

0

在這些情況下,我使用存儲庫模式,並在每個查詢/數據訪問中確保您傳遞包含業務標識的where子句。 例如:


select * from orders where [email protected] and [email protected] 

它,只要你想在地方的數據規則,以防止不適當的查詢,可以做到這一點的查詢是非常重要的。以Authorize屬性爲例,並不保證有人沒有篡改數據來加載其他公司的信息。

此外,我有http://mvcsecurity.codeplex.com/擴展程序來幫助保護存儲在頁面上的ID以防止篡改。