如下圖所示,我有一個獨立的API項目在服務器上運行,端口號爲3001
,我有一個運行在端口爲3002
的服務器上的Web App。端口如何使用遠程NodeJS API使用Passport.js驗證和授權客戶端Web應用程序
API,擁有所有獲取並把數據所需的Web應用程序(&移動應用)的API路線,包括驗證API(使用passport-local
和passport-jwt
)。在項目的API方面,我也處理了用戶角色授權,每個路由都有可以訪問這些API的角色列表。在端口登錄後3001
exports.roleAuth = function(roles){
return function(req, res, next){
var user = req.user;
User.findById(user._id, function(err, foundUser){
if(err){
res.status(422).json({error: 'No user found.'});
return next(err);
}
if(roles.indexOf(foundUser.role) > -1){
return next();
}
res.status(401).json({error: 'You are not authorized to view this content'});
return next('Unauthorized');
});
}
}
響應JSON
示例路線
todoRoutes.get('/',
requireAuth,
AuthController.roleAuth(['user','editor','admin']),
TodoController.getTodos);
角色授權API方法成功是這樣
{
"token": "JWT eyJhbGci...",
"user": {
"_id": "5986b81d940bab06ddc79b34",
"email": "[email protected]",
"role": "admin"
}
}
現在Web App中,我想用同樣的角色授權和認證(登錄),但是你看,Web應用程序未連接到數據庫,對我做出那樣檢查查詢,如果在會話的用戶是有效的,在成功登錄後的響應中具有角色。
摘要 這裏是什麼,我在這個問題尋找的要點:
- 在客戶端Web應用程序登錄在3001端口上,通過遠程API(實現)
- 獲得用戶令牌和其他信息(上面顯示的響應)(已實現)
- 確保用戶在客戶端Web應用程序上進行身份驗證,並且還記住用戶登錄的角色,將這些信息用於每個客戶端應用程序中的路線。在客戶端應用程序中,我有幾頁表單向端口號發送數據到服務器端API,這些頁面被兩個不同的用戶使用,角色分別爲編輯器和admin。
TIA
所以API沒有認證但沒有RBAC,但是webapp想要實現一個RBAC。對? – tbking
API具有認證和RBAC(適用於所有apis),現在web應用程序想要使用apis以及RBAC,RBAC for Web應用程序用於控制視圖,而RBAC for API用於控制對控制器和讀取的訪問權限,寫入數據。 –
嘿!我已經添加了答案。感謝您的解釋。 – tbking