一種新的 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. 可否將整個認證鑑權流程規範化?

相關文章
相關標籤/搜索