Spring MVC:保护处理程序方法

发布于 2024-10-31 19:07:49 字数 559 浏览 3 评论 0原文

我想知道在 Spring MVC 控制器中保护处理程序方法的好方法是什么。现在我使用 @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";
}

I'm wondering what is good approach to secure handler method in Spring MVC controller. Now i use @Secured annotation, that ensure that some method may be accessed by logged user only. But how to ensure that one logged user doesn't do something bad for other users ? For example i have method that delete item with given id. To ensure that someone can't remove other than his items i check item owner. Is better way to do something like that ?

@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";
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疯狂的代价 2024-11-07 19:07:49

也许你可以看看 @Preauthorize注释。您可以执行类似的操作,

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

您需要适当地重写当前代码。

Perhaps you can look at @Preauthorize annotation. You can do something like

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

You would need to rewrite your current code suitably.

迷迭香的记忆 2024-11-07 19:07:49

查看 Spring Security ACL(访问控制列表),您可以创建用户对此对象拥有的权限列表。权限包括读、写、删除...

Look into Spring Security ACL (Access control list) you can create a list of permissions that users have for this object. Permissions include read, write, delete...

放赐 2024-11-07 19:07:49

您需要实现基于角色的系统,基于权限的用户可以执行删除操作。

如果特定用户具有删除访问权限,那么他/她会执行删除存根。

You need to implement role base system, base on privileges user can perform delete operation.

If specific user having delete access then he/she do the delete stub.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文