JayData - 服务器端验证(CRUD)

时间:2012-06-09 11:31:39

标签: wcf wcf-ria-services jaydata

我想用JayData + WCF / RIA服务创建一个应用程序,但我需要检测客户端(Javascript)实体的变化,以便将业务逻辑放在服务器端。

例如:如果我更改了客户的名称,我想在服务器上更新之前进行一些验证。

无论如何都要做这样的事情?

    [Insert]
    public void InsertCustomer(Customer customer)
    {
        // Some validation before insert
    }

    [Update]
    public void UpdateCustomer(Customer customer)
    {
        // Some validation before update
    }

    [Delete]
    public void DeleteCustomer(Customer customer)
    {
        // Some validation before delete
    }

2 个答案:

答案 0 :(得分:0)

也许这不是你需要的,但是我给出了一个镜头:你可以使用附加到该字段的自定义验证器功能验证客户端上的字段。这是你如何做到的: 使用JaySvcUtil.exe导入数据上下文后,修改实体并使用customValidator修饰该字段:

$data.Entity.extend("UserModel", {
    Id: { type: "int", key: true, computed: true },
    UserName: { type: "string", required: true,
               customValidator: function (v) { return !v || v.length == 3 }, 
               errorMessage: "custom error, length: 3" }
});

在当前版本中,没有实体级别验证功能。如果您希望这样,请在JayData.org/backlogs上提交用户素材,或在github.com/jaydata/jaydata上提交问题

答案 1 :(得分:0)

要安全地解决这个问题,你需要在服务器端(而不是在JayData中)进行此操作,并且需要在.NET方式或自己的方式上实现身份验证然后检查onupdate服务器端方法并制作一些东西像这样:

C#代码:

[Insert]
public void InsertCustomer(Customer customer) {
    if (! customer.LoginName == Thread.CurrentPrincipal.Identity.Name ) {
      throw new SomeValidtionException()
    }
}

这是你需要的吗?