我想知道什么是在Spring MVC控制器中保护handler method
的好方法。现在我使用@Secured
注释,确保只有已登录用户可以访问某些方法。但是如何确保一个登录用户不会对其他用户做坏事呢?例如,我有删除给定id
的项目的方法。为了确保有人不能删除他的物品,我检查物品所有者。是做更好的方法吗?
@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 :(得分:0)
查看Spring Security ACL(访问控制列表),您可以创建用户对此对象的权限列表。权限包括读,写,删除...
答案 1 :(得分:0)
也许您可以查看@Preauthorize注释。你可以做点什么
@PreAuthorize("#item.id == authentication.id")
public void doSomething(Item item);
您需要适当地重写当前代码。
答案 2 :(得分:0)
您需要实现角色基础系统,基于权限用户可以执行删除操作。
如果特定用户具有删除访问权限,则他/她执行删除存根。