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

How to use the useMasterKey with Node.js in parse?

大家好,我的应用程序是在 parse.com 中制作的,但我想使用主密钥,因为我的用户具有管理员角色。

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

好吧,我尝试使用 Express 和 Cloud Code,但是当我尝试使用 Parse.Cloud.useMasterkey() 时,控制台显示:

部署失败 error:Uncaught Parse.initialize() 传递了一个主密钥,它只允许在 Node.js.

中使用

所以我的问题是如何使用 Node.js 进行解析?或者在没有 Node 的情况下无法使用 MasterKey??

干杯:)

好吧,这是我的代码,管理员用户想添加新员工,但只有他能做到,所以在数据浏览器中,用户是主键

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);}
     });


};

你不应该使用来自网络的主密钥,那是不安全的。您需要做的是为您的数据分配正确的权限 table.

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

您应该做的是向您尝试创建的 class 添加正确的写入权限。在这种情况下,这可能是员工 class。确保只有管理员用户可以写入此 table。也许你可以添加一个 Administrators 角色,并为这个角色添加写权限。

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

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

这里有一些关于完整实施的说明。

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

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

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

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" });