如何使用Backand安全性操作参数

时间:2016-06-12 23:33:12

标签: backand

提出这个问题的简短方法是这样的;有谁知道是否可以使用提供给api上的注册方法的参数来有条件地设置新创建的用户的角色?

现在提供更详细的问题;

我正在开发一个应用程序,该应用程序具有多种不同类型的用户,我希望为其分配一个后备和安全角色。我试图根据提供给Backand注册方法的参数有条件地设置用户角色,但是在定义创建时发生的安全操作时,我无法弄清楚如何读取发送到参数对象的值。 / p>

在客户端的角度注册控制器中,isManager角色是根据请求的路由设置的。

if (isManager) {
  params = {
    manager: isManager,
  };
}
return this.Backand.signup(firstName, lastName, email, password, confirmPassword, params)
  .then((result) => {...

该调用有效并创建一个新的用户对象,我甚至可以根据本说明和后续示例调用create方法时将用户对象的角色更改为Manager。

  

注意:出于安全原因,您无法从注册API更改角色 - 这只能通过让管理员更改安全性和安全性的相应设置来实现。验证 - > “已注册用户”页面,或通过使用“管理员”权限创建自定义服务器端操作。使用以下代码在Before Create触发器中创建新的安全操作(这会将角色更新为' Public'):

这里找到了; http://docs.backand.com/en/latest/apidocs/security/#sign-up

我添加的逻辑类似于那里的示例,但我想知道是否可以根据提供的参数添加一些条件逻辑。这是我的尝试;

function backandCallback(userInput, dbRow, parameters, userProfile) {
// write your code here
if (parameters && parameters.manager) {
    userInput.Role = 'Manager';
}

return {};
}

这不起作用,当我尝试添加一个console.log时,它将显示参数对象的外观,但是从不生成该日志消息。我当然把应用程序置于调试模式,当我从Backand UI测试安全操作时生成消息,但是当我通过api调用方法时它不会记录。

是否有人知道是否可以使用提供给api上的注册方法的参数来有条件地设置新创建的用户的角色?

1 个答案:

答案 0 :(得分:0)

您可以将参数发送到注册操作并在那里实现您的角色分配逻辑。

以下是一个示例注册请求正文

{
 "firstName": "string",
  "lastName": "string",
  "email": "{{username}}",
  "password": "123456",
  "confirmPassword": "123456",
  **"parameters":{ "userType" :"manager"}**
}

现在,如文档中所述,在Create之前添加一个自定义服务器端Javascript安全性操作,如下所示:

'use strict';
function backandCallback(userInput, dbRow, parameters, userProfile) {
    // write your code here

    userInput.Role = 'Public';
    if(parameters.userType =='manager')
        userInput.Role = 'Manager';
    return {};
}

为了完成上述工作,我添加了一位新的经理'角色(安全和验证 - >安全模板 - >添加角色)