2015-10-27 73 views
0

我甚至不知道這個問題的標題是否正確 - 如果不是,請原諒。我有這樣的問題:Java - 用戶對象訪問控制

我的web應用程序只能被登錄用戶訪問。每個用戶被表示爲保存在數據庫中的User實體。

還有一些其他實體類:AB,C ...也保存在數據庫中。類別AB ...的每個對象都可以由任何用戶創建。 但user1不應該看到由user2創建的對象。

問:

我怎麼能做出這樣的訪問控制?

我天真的想法:

我可以(在數據庫表的情況下,列)添加User屬性爲每個實體類。在創建對象時,此屬性將採用當前用戶標識。到目前爲止,對我來說沒問題。但是,我必須將當前用戶添加到每個數據庫選擇。這在某些方面有問題。

例如,使用Spring JPA代替:

public interface MessageRepository extends JpaRepository<Message, Long> { 
    List<Message> findByReceiveDateBetween(Date from, Date to); 
} 

我必須使用:

public interface MessageRepository extends JpaRepository<Message, Long> { 
    List<Message> findByReceiveDateBetweenAndUser(Date from, Date to, User user); 
} 

我的應用程序是用Java編寫與春天。

這種訪問控制是如何實現的?

+0

這聽起來像你已經知道如何做到這一點。爲什麼將當前用戶添加到每個數據庫選擇是一個問題?當然,這是一個額外的打字,但如果你想根據用戶進行選擇,你必須這樣做。 – forgivenson

+0

這個操作是例行的(可重複的),所以我認爲有一些更好的方法不用手動向用戶添加'user'。此外,我聽說有關ACL的一些事情,所以我認爲也許有人可以提出比我的天真更好的解決方案。 – jsosnowski

回答

0

您絕對需要在數據庫級別爲每個實體標記其創建者的ID。