2011-04-12 109 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

您需要实施角色基础系统,根据权限用户可以执行删除操作。

如果具有删除访问权的特定用户,则他/她执行删除存根。