"用户未经授权"在meanjs

时间:2015-08-05 01:26:24

标签: angularjs mongodb mongoose meanjs

我想问一下是否有人在JSON格式上获得相同的响应:   Objectdata:"用户未经授权"标题:(姓名){status:403statusText:"禁止" 场景: 用户A发布产品并在产品上添加评论。 结果:成功。 用户B评论同一产品: 结果:用户未获得授权。 我用来更新产品评论的代码如下: 的applicationName /` //添加评论到产品 $ scope.comment = function(){     // console.log(" name:",$ scope.user);     // console.log(" textarea:",this.commentarea);     var comment = {         name:$ scope.product.user.displayName,         文字:this.commentarea     };     $ scope.product.comments.push(评论);     $ scope.product。$ update(function(){         console.log('成功更新');     },function(errorResponse){         console.log('成功错误',errorResponse);     }); }; 这是服务器端。 '使用严格的&#39 ;; / **  *模块依赖性。  * / var init = require(' ./ config / init')(),     config = require(' ./ config / config'),     mongoose = require(' mongoose'),     chalk = require(' chalk'); / **  *主要申请条目文件。  *请注意,装货顺序很重要。  * / //引导数据库连接 var db = mongoose.connect(config.db,function(err){     if(错误){         console.error(chalk.red('无法连接到MongoDB!'));         的console.log(chalk.red(ERR));     } }); //初始化快递申请 var app = require(' ./ config / express')(db); // Bootstrap护照配置 要求(' ./配置/护照')(); //通过收听< port>来启动应用 app.listen(config.port); //公开应用 exports = module.exports = app; //记录初始化 console.log(' MEAN.JS应用程序在端口' + config.port上启动);

1 个答案:

答案 0 :(得分:0)

如果您的Products架构如下所示:

var ProductSchema = new Schema({
    created: {
        type: Date,
        default: Date.now
    },
    title: {
        type: String,
        default: '',
        trim: true,
        required: 'Title cannot be blank'
    },
    comments: [{
        type: String,
        default: '',
        trim: true
    }]
});

您已在app/routes/products.server.routes.js文件中限制了产品路线,如下所示:

app.route('/products/:productId')
    .get(products.read)
    .put(users.requiresLogin, products.hasAuthorization, products.update)
    .delete(users.requiresLogin, products.hasAuthorization, products.delete);

然后,未授权的用户无法添加评论,因为他们无法更新产品记录。

您可能想要创建单独的CommentsSchema并使用Mongoose ObjectId类型与产品建立一对多关系:

var CommentSchema = new Schema({ 
    product: ObjectId,
    content: {
        type: String,
        default: '',
        trim: true,
        required: 'Content cannot be blank'
    }, 
})

这样可以保护产品的安全性并允许未经授权的用户发表评论,但需要您执行稍微复杂的查询才能在产品视图中显示您的评论。