问题: 我需要判断当前用户是否,具有访问当前url的权限。但是接收访问的时候我无法判断是 页面的请求与接口访问,所以没办法来区分。
我的想法如下:
app.use(function (req, res, next) {
// 1. 获取url
// 2. 根据url和当前用户配置判断 是否具有访问资格
})
如果有好的办法和建议的希望提供帮助。
黄舟2017-04-17 14:33:33
我也在摸索著在這方面實踐。
憑藉我的經驗,試答如下:
設計上應該盡量把同一類api設定在一個base_path下,這樣可以在那個base_path上掛載一個中間件鑑權。
基於rbac的思想,我試過在你的想法的中間件那裡,獲取path,取得user.role。然後透過一個既定的map查詢。 accessible = PermitRoleMap[req.user.role][req.url.path]
在上述條件下,PermitRoleMap是一個二維的bool型陣列。也可以升級為允許儲存function。
最後,通常少許的一些個path上,還要有專門的權限處理中間件,或者處理步驟。
另外我正在看
https://github.com/bryandragon/mongoose-rbac
https://github.com/OptimalBits/node_acl