2016-12-16 45 views
0

我創建了休息api:安全更新休息api中的對象

GET metohd on/api/address返回當前登錄用戶的地址。然後用戶可以編輯一些數據並通過POST將編輯後的json發送到/ api/address。但用戶也可以發送preapred json來休息api,省略UI。

例如:

{id:2, street: Madison, flatNumber: 14} 

然後在AddressService:

public void updateUser(AddressDto address) { 
    repository.findOneById(address.getId()).ifPresent(a -> { 
    a.setFlatNumber(address.getFlatNumber()); 
    respository.update(a); 
    }); 
} 

但是用戶可以與不同的ID發送準備JSON。並編輯不屬於他的地址。如何防止這種情況?

我想確定用戶是否只能更新他們的數據。我是否應該每次檢查實體是否與登錄用戶有關?

回答

0

updateUser方法中,修改代碼以根據用戶提取記錄。

repostiory.findAddressByUserAndId(user, address.getId()) 

而且如果你只需要每個用戶一個地址,可以考慮使用useras地址記錄的ID。

+0

感謝您的回答。實際地址實體只是一個簡單的例子。在我的應用程序中,我有更復雜的實體關係。你提出的想法很好。老實說,我希望有更優雅的解決方案。所以如果任何更好的解決方案在一段時間內不會出現,我會接受這個答案。 – Kamil