如何在MEAN堆栈Web应用程序中实现页面授权?

时间:2017-03-01 13:19:49

标签: node.js mongodb mongoose mean-stack

我正在为mongodb编写应用程序的架构。通常在带有Sql的asp.net中,我们已经为每个角色分配了页面/ UI,这意味着角色具有访问页面的权限(查看/编辑)。当角色登录到应用程序时,他只能在指定的页面中查看/编辑该角色,将不会为该角色显示未分配的页面。

在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 );

我是MEAN堆栈的新手,我们如何在MEAN堆栈Web应用程序中实现授权相关的东西。

2 个答案:

答案 0 :(得分:1)

我认为您想要的是基于用户角色的authorization级别,您可能需要查看passport js。使用passport js,您将能够处理授权,并且您可以使用节点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
});

希望这有助于您了解如何根据角色处理授权。

答案 1 :(得分:0)

最简单的方法是使用Passport:

  

Passport是Node.js的身份验证中间件。 Passport非常灵活和模块化,可以不受干扰地放入任何基于Express的Web应用程序中。一套全面的策略支持使用用户名和密码,Facebook,Twitter等进行身份验证。

在MEAN堆栈中,您使用的是Express,它支持Passport等任何连接式中间件。