【问题标题】:Controlling security on model updates in RESTful Spring MVC / HATEOS在 RESTful Spring MVC / HATEOAS 中控制模型更新的安全性
【发布时间】:2013-06-21 06:14:39
【问题描述】:

考虑以下对象:

class User {
   Long userId
   String emailAddress;
   boolean isLocked;
}

如果我为User 资源实现一个端点,如下所示:

@Controller
public class UserController {

    @RequestMapping(value="/user/{userId}",method=RequestMethod.PUT)
    public void updateUser(@PathVariable("userId") Long userId, User updatedUser)
    {
        User dbUser = userRepository.find(userId)
        // map updatedUser to dbUser
        userRepository.save(dbUser);
    }
}

目前是否有公开/user/{userId}端点的标准方法,但根据用户权限限制特定字段的更新?

例如我可能希望将isLocked 属性的更新限制为ROLE_ADMIN 的用户,同时仍允许用户更新他们的电子邮件地址。

注意 - 这个问题并不完全属于 Spring HATEOS - 我对这个问题的任何 Spring 标准解决方案感兴趣。

【问题讨论】:

    标签: java spring spring-mvc spring-security


    【解决方案1】:

    我想到了两种可能性:

    • 验证 (@Valid)
    • 活页夹配置 (@InitBinder)

    您可以验证传入的对象并检查此类更改。或者您可以根据用户权限在您的@InitBinder 方法中设置WebDataBinder#setAllowedFields。后一种可能是最简单的方法。但是,您的应用程序将完全忽略这些字段,而不是返回验证错误。

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 2019-11-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2012-01-21
      相关资源
      最近更新 更多