2017-03-01 79 views
0

我正在爲mongodb中的應用程序編寫架構。通常在使用Sql的asp.net中,我們已將頁面/ UI分配給每個角色,這意味着角色具有訪問頁面的權限(查看/編輯)權限。當角色登錄到應用程序時,他只能在分配給該角色的頁面中查看/編輯,未分配的頁面將不會顯示該角色。如何在MEAN stack web應用程序中實現授權頁面?

在c#中我已經限制了在pre_init事件中寫入代碼的角色。在MEAN Stack應用程序中,我正在嘗試使用mongoDB。

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema;  


var rolesSchema = new Schema({ 
    role: { name: String }, 
    accessPage: { pagename: String, view: true, Edit: true } 
}); 


var roles= mongoose.model('roles', rolesSchema); 

我是新來表示棧,我們如何才能實現平均棧的網絡應用程序的授權相關的東西。

回答

1

我想你想要的是根據用戶的角色authorization的等級,你可能想看看​​。使用​​您將能夠處理授權,並且您可以使用節點middlewares根據用戶的角色處理授權。

嘗試在req.user中存儲用戶的角色。閱讀passport documentation瞭解更多關於req.user

樣品中間件:

var isAdmin = function (req,res,next){ 
     if(req.user && req.user.role==='Admin') 
      next(); 
    else{ 
     return; 
    } 
} 

用它在你的節點的路由

router.post('/someRoute', isAdmin, function (req,res,next){ 
    //Handle your route here 
}); 

希望這有助於你得到關於如何基於角色的處理授權一些想法。

+0

是開源的 –

+0

是的,它是開源的,只是嘗試使用它。它會滿足你的目的。去它的網站passportjs.org並閱讀。 –

0

,最簡單的方式做這將是與護照:

護照是Node.js的認證中間件極其靈活和模塊化的Passport可以不顯眼地投入到任何基於Express的Web應用程序中。一套全面的策略支持使用用戶名和密碼,Facebook,Twitter等進行身份驗證。

在您使用Express的MEAN堆棧中,它支持任何連接式中間件,如Passport。

+0

是開源嗎? –

相關問題