2017-03-01 100 views
-1

我有一個應用程序有兩個域模型 組織和TicketQuestion。 身份驗證的用戶希望創建票證有一個組織屬性來解決 每個用戶允許一些組織是這樣的:使用spring安全性授權對象?

用戶1許可Organization1

用戶2許可Organization2

TicketController.java有救方法創建票證。 我有這個漏洞:用戶1可以調用具有Organization2的票(該用戶沒有權限)。 我正在使用Hibernate篩選器來獲取GET方法中的授權數據,但我不知道如何保護用戶想要的數據,並且沒有權限?

/ticket/save 

{ 
    id:-1, 
    organization:{ 
    id:2, 
    title:'organization2' //not allowed this organization 
    } 
} 


@Entity 
@Table(name = "core_organization_structure") 
public class OrganizationStructure { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

    @Column(name = "title", nullable = false) 
    private String title; 
} 

@Entity 
@Table(name = "core_Ticket") 
public class Ticket { 


    ..some prop 

    @ManyToOne 
    @JoinColumn(name = "org_id", nullable = false) 
    private OrganizationStructure org; 
} 

回答

0

提交表單時,您需要加載經過身份驗證的用戶的權限,並檢查他們是否有權執行他們嘗試執行的操作。

如果用戶正在嘗試爲他們沒有權限的組織創建票證,不要堅持記錄,並妥善處理。 (拋出異常,返回401等...)

+0

是的基本解決方案之一是。想象我的域模型有10個屬性,都有這個問題。我爲每個屬性寫入代碼加載?!另一個問題:我有添加更新和刪除方法,也許有超過這3種方法,另一個問題是,如果組織使用100域模型寫這個檢查代碼100次,我想在我的服務外解決問題。 –