- 的電子商務市場中,賣家列表中的項目
- 有一種操作項目:: setPrice
- 項目或客戶服務代表的賣方架構藍圖可以改變物品的價格。
- #3的安全檢查在物品的數據訪問層附近實施,以最大化安全檢查的覆蓋範圍。鄉親
地塊的喜歡談論安全作爲正交關注但我(目前?)不與板想着尤其是當有關實例級別的安全性,因爲這是無情地綁在域模型。底線是,我實際上更喜歡,#3中的安全不變性在代碼中(通過代碼或通過Spring Security EL註釋)明確表示。我認爲這種安全不變量是業務邏輯的一部分。我也希望開發者的臉上安全。這與IMO的責任並不是正交的。
我可能會寫這樣的:
@PreAuthorize("hasRole('CSR_ITEM_WRITER') or #item.seller.id == principal.id')
public void setPrice(Item item, Money price) { ... }
我意識到,當涉及到不斷變化的安全模型(但就是這樣一件壞事考慮了走錯路的影響這造成了一定的靈活性呢? )
我們還討論了CS代表必須「成爲」賣方的方法。這有一定的清潔度(因爲這確實關注了域的安全模型而不是用例)。 (N.B.將進行充分的審計以檢測某人是否代表另一人行事)
意見?