一种新的 RESTful 权限设计讨论

请求权限映射

根据RESTful的相关风格规范, 咱们将请求映射为如下几种操做数据库

GET     /users/                ----->  `list.users` 
GET     /users/:id/            ----->  `retrieve.users`
POST    /users/                ----->  `create.users`
PUT     /users/:id/password/   ----->  `replace.users`
PATCH   /users/:id/            ----->  `update.users`
DELETE  /users/:id/            ----->  `destroy.users`

权限控制器映射

若是后端以MVC模式进行开发, 那么咱们能够映射以下控制器后端

`list.users`        ----->  list(users) 
`retrieve.users`    ----->  retrieve(user,id)  
`create.users`      ----->  create(users)       
`replace.users`     ----->  replace(users,id,field)   
`update.users`      ----->  update(users,id)           
`destroy.users`     ----->  destroy(users,id)

鉴权流程

权限的管理采用传统的RBAC模式bash

  1. 身份验证,返回具体user或者anonymous,接下来咱们把这一步返回的user都做为正常usercode

  2. 验证请求权限,即上述验证请求权限映射中间件

  3. 验证资源存在性与所属权, 这里存在争议.资源

    • 若是放到控制器以前, 那么可能会出现格外数据库查询,同时会增长代码上的复杂性, 可是能够把全部鉴权过程放到一块儿.开发

    • 若是放到控制器中,鉴权过程分开了,因为不一样的资源可能有不一样的所属权判断标准,这样能够增长灵活性.权限控制

讨论点

  1. 资源存在性与所属权放到控制器里仍是做为中间件放到控制器以前?class

  2. 请求权限映射有哪些须要改进的地方?date

  3. 可否将整个认证鉴权流程规范化?

相关文章
相关标签/搜索