登录

Spring RESTful API如何做到对象(资源)级别的权限控制

比如"/api/v1/orders/{orderID}/action/cancel",这是一个对订单进行取消的API地址,很明显能进行这个操作的必须是订单交易双方用户,即用户只能操作orderID是属于自己的订单

1.spring security还有shiro这些安全框架都是基于角色(role)来做控制,没有精确到对象级别,虽然他们也有对象级别的权限控制,但是十分复杂不优雅,请教大家是怎么做的
2.如果在spring中的service层来做可以吗?在业务逻辑处理之前service自己判断用户是否有权限,这样就要求每个service层的方法参数中都要有当前用户的ID
3.如果在controller层调用service之前再独立一层专门做权限校验的是否可行

综上:请教大家在开发RESTful API时权限这方面是怎么做的,谢谢


# Java
高洛峰 高洛峰 2558 天前 342 次浏览

全部回复(1) 我要回复

  • 三叔

    三叔2016-10-27 14:13:48

    你这个是数据级权限,不是spring security, shiro这种通用authc,authz框架能够解决的。

    所以这个控制权还是在你自己这里,你可以写在controller里,也可以写在service里。不过建议写在service里,因为你这个属于业务逻辑的一部分。


    回复
    0
  • 取消 回复 发送