【问题标题】:How to achieve authorize the pages in MEAN stack web application?如何实现对 MEAN stack web 应用程序中的页面进行授权?
【发布时间】:2017-03-01 21:47:21
【问题描述】:

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

【问题讨论】:

    标签: node.js mongodb mongoose mean-stack


    【解决方案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
    });
    

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

    【讨论】:

    • 是否开源
    • 是的,它是开源的,只是尝试使用它。它将为您服务。访问其网站 passportjs.org 并阅读。
    【解决方案2】:

    最简单的方法是使用 Passport:

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

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

    【讨论】:

    • 它是开源的吗?
    猜你喜欢
    • 2015-07-24
    • 2016-01-25
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多