如何在解析中使用useMasterKey和Node.js?

时间:2015-03-02 19:03:29

标签: javascript node.js express parse-platform cloud-code

嗨enveryone我在parse.com上制作了我的应用程序但是我想使用主密钥,因为我的用户具有administrador的角色。

首先我尝试使用JS SDk,但他们告诉我,我必须使用Cloud Code。

我尝试使用Express和Cloud Code,但是当我尝试使用Parse.Cloud.useMasterkey()时,控制台会说:

部署失败并出现错误:未捕获的Parse.initialize()传递了一个主密钥,只允许在Node.js中使用。

大豆我的问题是我如何使用解析的Node.js?或者没有节点使用MasterKey?

干杯:)

这是我的代码,Administrador用户想要添加新员工,但只有他能做到,所以在数据浏览器中用户是主密钥

exports.create = function(req, res){

   Parse.Cloud.useMasterKey();

   var nombre = req.body.nombre;
   var apellido = req.body.apellido;
   var email = req.body.email;
   var telefono =req.body.telefono;
   var celular = req.body.celular;
   var username = req.body.username;
   var password = req.body.pwd;

   //set data in empleado and users
   empleado.set("nombre", nombre);
   empleado.set("apellido", apellido);
   empleado.set("email", email);
   empleado.set("telefono", parseInt(telefono));
   empleado.set("celular", parseInt(celular));
   user.set("username", username);
   user.set("password", password);
   user.set("email", email);

  /* //crear a pointer in Users tables with information of employee 
   user.set("informacionAdicional", empleado);
   user.save();*/

   empleado.save(null,{
    success: function(empleado){
        console.log('Se han guardado los datos del empleado');},
        error: function (error){
             alert("Error"+ error.code + "" + error.message);}
     });


};

1 个答案:

答案 0 :(得分:1)

您不应该使用网络中的主密钥,这将是不安全的。您需要做的是为您的数据表分配正确的权限。

首先,阅读数据安全性:https://parse.com/docs/data#security

您应该做的是为您要创建的类添加正确的写权限。在这种情况下,这可能是Employee类。确保只有admin用户可以写入此表。也许您可以添加管理员角色并为此角色添加写入权限。

使用javascript SDK,用户首先需要进行身份验证。如果经过身份验证的用户是管理员角色的一部分,则用户将能够添加用户。

您不需要使用主密钥,您不应该在客户端执行此操作。那将是不安全的。如果您在客户端公开主密钥,则任何人都可以读取密钥并获得对数据库的完全访问权限。

以下是有关完整实施的一些说明。

首先在html中确保你有这个:

<script src="//www.parsecdn.com/js/parse-1.3.5.min.js"></script>

然后你需要初始化解析并定义一个函数来创建一个像这样的用户:

Parse.initialize("your application id goes here", "your javascript key goes here");

var createEmployee = function(employeeData){

    var Employee = Parse.Object.extend("Employee");
    var employee = new Employee();

    employee.set("name", employeeData.name);

    //Set more properties of the user/employee


    employee.save(null, {
      success: function(gameScore) {
        // Execute any logic that should take place after the object is saved.
        alert('New employee created with objectId: ' + employee.id);
      },
      error: function(gameScore, error) {
        // Execute any logic that should take place if the save fails.
        // error is a Parse.Error with an error code and message.
        alert('Failed to create new object, with error code: ' + error.message);
      }
    });

};

然后,当您需要创建员工时,请调用以下函数:

createEmployee({ name: "Some name" });