2017-03-01 80 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

是开源吗? –

相关问题