【问题标题】:What's the better way of implementing security with MEAN.js使用 MEAN.js 实现安全性的更好方法是什么
【发布时间】:2014-08-23 19:13:43
【问题描述】:

我正在使用mean.js,我对这里的身份验证和授权有点怀疑......

MEAN.js 带有一个开箱即用的 passport.js 实现,它似乎工作得很好,我只知道用户何时登录。但在授权的那一刻,我脑海中突然出现了一些问题。 . 做我的研究,我得到了一些答案,但我不知道在我的应用中实现安全 API 调用的最佳方式是什么。

到目前为止,我正在采用这个解决方案:

使用 express.all() 函数在一个文件中设置我所有的授权函数(我想这是一个好习惯吧?).. 使用以下代码示例创建一个文件:

'use strict';
var passport = require('passport');
module.exports = function(app) {

    app.route('/private/p/*').all(function(req, res, next){
        if(!req.isAuthenticated()){
            res.send(401);
        }else{
            next();
        }
    });

    app.route('/private/byRoles/*').all(function(req, res, next){
        if(!req.isAuthenticated()){
            res.send(401);
        }else{
             var urlRoles = ['admin', 'godlike'];
            // ROLE LOGICS THAT ARE GOING TO BE ADDED TO MY USER
            // GETTING MY USER ID BY THE DE-SERIALIZE PASSPORT FUNCTION AND GETTING MY 
            // MONGO MODEL FOR MY USER, WITH THE INFO OF ROLES IN THERE AND DOING 
            // SOME LOGICS HERE ABOUT THE ROLES AND URL PATTERN.
            if ( hasRole(urlRoles, user.roles)){
                next();
                }else{
                   res.send(401);
                }
        }
    });
};

到目前为止,这是我计划实施的解决方案,但我想确定我在这里做什么......有没有更好的方法在 mean.js 中实施授权?这个授权中间件是不是用护照错误地实现了?我不确定是否有必要为此实施另一种策略..或者此实施是否缺乏安全性(当然必须)..最好使用Oauth或使用api令牌???保护使用 MEAN.js 制作的应用程序支持角色和权限的架构应该是什么?将来我也需要保护我的套接字。我正在研究护照套接字。但不确定是否有更好的解决方案。

【问题讨论】:

    标签: security express mean-stack passport.js passport.socketio


    【解决方案1】:

    我将 JWT 用于我的 Angular 应用程序。有很多文章介绍了使用令牌而不是会话或 cookie 的好处Cookies vs Tokens. Getting auth right with Angular.JS

    你可以用 JWT 做任何你想做的事情,后端和前端的角色,保护套接字也是可能的,并且有这个功能的包。如果您使用代币,则不需要护照。您检查一次凭据并将令牌存储在浏览器本地存储中。 express和JWT的包很多Express-JWT

    详细了解 JWT jwt.io

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 2010-12-21
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多