我正在開發一個項目,用戶可以登錄並創建任意數量的「工作項目」,因爲它們與帳戶ID綁定在一起。我們使用OWIN和ASP.NET Identity 2.1。在ASP.NET MVC中調用控制器方法時驗證用戶權限
響應HTTP POST請求的所有MVC控制器操作都需要將WorkProjectId作爲HTTP標頭傳入。登錄的用戶應該只能與與其登錄相關的WorkProjects交互。這提出了一個重要的安全考慮:在控制器操作被調用時,可能通過使用自定義屬性來詢問WorkProjectId與當前登錄的用戶相關聯的最佳實踐?
E.g.
[EnsureUserIsAllowedToDoAnythingToThisWPID]
public async Task UpdateWorkProjectTitle(ViewModel vm) {
...
}
因爲他們認爲合適的用戶可以創建許多WorkProjects,我不認爲我可以與基於聲明的安全做到這一點。據我所知,如果WorkProjectIds以某種方式存儲爲索賠,如果它們被修改,則只要發生這種情況,就必須記錄用戶進出......這顯然是不可接受的。
因此,爲了實現我所需要的,存儲登錄用戶在會話狀態下訪問的Id是否「錯誤」?過去我在其他有會話狀態濫用的項目上被燒得非常糟糕(閱讀:太多的數據被序列化爲會話狀態),導致Web服務器癱瘓。如果有同樣簡單的方法,我寧願避免它。
謝謝