0

考虑以下对象:

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 标准解决方案感兴趣。

4

1 回答 1

0

我想到了两种可能:

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

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

于 2013-06-21T07:30:53.107 回答