我目前已經實現了一個行級別的安全性,其中需要安全的表具有所有者,組和Unix樣式權限的列。動態禁用hibernate抓取
什麼正在發生的事情是,每次我們要求通過Hibernate的實體的時候,我們添加了一個自定義的標準驗證用戶是否有訪問數據。這個自定義標準也被添加到每個create.Alias()以確保與其他表的聯繫也得到保證。
的問題是我們的模型具有@ManyToOne關係的多個實體和因爲這些實體被自動獲取,也沒有辦法,以確保嵌套實體。
我所尋找的是一個方法要麼:
讓這個只有實體添加通過create.Alias()是獲取
OR
- 增益動態控制什麼通過休眠獲取
這些似乎是不會暗示巨大代碼重構的兩種方式 我們的項目。
這是不是可以做或有任何其他方式來執行在我們的安全?
P.S:永遠不會返回嵌套實體,因爲它是客戶端所需要的。此外,我們嘗試使用max_fetch_depth 0,但即使嵌套實體在我們的初始查詢中未被請求,hibernate似乎會使多個後續查詢來完成實體。
謝謝你的回答。我們確實研究過濾器,不幸的是,它似乎需要爲每個當前關係和未來的關係添加一個這樣的過濾器。這意味着如果未來的程序員添加了其他幾個模型並忘記包含過濾器,則該實體將不安全。這似乎有點冒險。目前我們對數據庫的請求幾乎全部重新組合到一個通用的「服務」類中,因此在每個查詢中添加安全性都不是問題。 – jemag
我不會說謊,我真的沒有想到這種情況,我認爲休眠過濾器可能是一個臨時解決方案。但問題是,我似乎無法使用ManyToOne嵌套實體屬性來過濾實體。如果你碰巧在你自己的項目中找到了解決方法,這裏是另一個關於這個問題的stackoverflow帖子:http://stackoverflow.com/questions/35437164/hibernate-manytoone-filter-on-base-entity – jemag
@jemag我正在處理它。過濾器越來越引起我的興趣,因爲這是一個真正值得更多的想法的半劈分實現。它們的應用範圍和可用屬性的範圍都非常有限,無法過濾。 – Douglas