没发现好用的权限管理的包,如何该自己写使用token做验证的权限管理?怎么写比较好?
欢迎选择我的课程,让我们一起见证您的进步~~
我的做法是這樣的:
在所有路由規則前面加上一個通用規則,對進入的請求進行過濾,假設是一個 authenticate() 函數。
authenticate()
在 authenticate() 函數中,提取 url query 中的 timestamp 和 token 欄位。先判斷 timestamp 的合法性,例如與現在時間相比不能超過5分鐘。然後根據你的 token 規則產生用於驗證的 token,再和 url 中的 token 做對比,如果一致則驗證通過。
timestamp
token
遇到任何不合法的情況,立即 return res.status(400).send({ok: -1, errMsg: "<ERROR MESSAGE>"}),最後是 next() 對合法的請求放行。
return res.status(400).send({ok: -1, errMsg: "<ERROR MESSAGE>"})
next()
權限管理這裡是指?如果是登入校驗的話,可以試試passport,這就是一個token-based插件,而且還有個不錯的生態系統,基本上常見的校驗策略都有現成的實現。
token-based
如果指的是各種角色、使用者之類的,可以試試rbac。
我的做法是這樣的:
在所有路由規則前面加上一個通用規則,對進入的請求進行過濾,假設是一個
authenticate()
函數。在
authenticate()
函數中,提取 url query 中的timestamp
和token
欄位。先判斷timestamp
的合法性,例如與現在時間相比不能超過5分鐘。然後根據你的 token 規則產生用於驗證的 token,再和 url 中的token
做對比,如果一致則驗證通過。遇到任何不合法的情況,立即
return res.status(400).send({ok: -1, errMsg: "<ERROR MESSAGE>"})
,最後是next()
對合法的請求放行。權限管理這裡是指?如果是登入校驗的話,可以試試passport,這就是一個
token-based
插件,而且還有個不錯的生態系統,基本上常見的校驗策略都有現成的實現。如果指的是各種角色、使用者之類的,可以試試rbac。