我正在为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应用程序中实现授权相关的东西。
答案 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等任何连接式中间件。