2011-04-12 157 views
0

我在想什麼是在Spring MVC控制器中保護handler method的好方法。現在我使用@Secured註釋,它確保某些方法只能由登錄用戶訪問。但是如何確保一個登錄用戶不會對其他用戶造成不良影響?例如,我有刪除項目與給定id的方法。爲了確保有人不能移除除物品之外的物品,我會檢查物品所有者。更好的方式來做這樣的事情?Spring MVC:安全處理器方法

@Secured("ROLE_USER") 
@RequestMapping("/deleteitem.html") 
public String delete(@RequestParam(value="id") Long id) { 
    Item b = itemDAO.get(id); 
    if(b.getOwner().getId().equals(((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUser().getId())) { 
     itemDAO.delete(id); 
    } 
    return "redirect:/user/items.html"; 
} 

回答

0

也許你可以看看@Preauthorize註釋。你可以做類似

@PreAuthorize("#item.id == authentication.id") 
    public void doSomething(Item item); 

你需要適當地重寫你的當前代碼。

0

調查Spring Security ACL(訪問控制列表),您可以創建用戶對此對象擁有的權限列表。權限包括讀取,寫入,刪除...

+0

我不想限制某些操作給特定用戶。 – marioosh 2011-04-13 12:16:55

0

您需要實施角色基礎系統,根據權限用戶可以執行刪除操作。

如果具有刪除訪問權的特定用戶,則他/她執行刪除存根。