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

How to achieve authorize the pages in MEAN stack web application?

我正在为 mongodb 中的应用程序编写架构。通常在asp.net和Sql中,我们为每个角色分配了pages/UIs,这意味着角色有权限(view/edit)访问页面或没有。当角色登录到应用程序时,他只能 view/Edit 在分配给该角色的页面中,不会为该角色显示未分配的页面。

在 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 应用程序中实现授权相关的东西。

最简单的方法是使用 Passport:

Passport is authentication middleware for Node.js. Extremely flexible and modular, Passport can be unobtrusively dropped in to any Express-based web application. A comprehensive set of strategies support authentication using a username and password, Facebook, Twitter, and more.

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

我觉得你想要的是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
});

希望这可以帮助您了解如何处理基于角色的授权。