0

我想使用 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
    }
4

2 回答 2

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提交问题

于 2012-06-11T12:48:14.210 回答
0

为了安全地解决这个问题,您需要在服务器端(而不是在 JayData 中)执行此操作,并且您需要以 .NET 方式或自己实现身份验证然后检查 onupdate 服务器端方法并进行如下操作:

C#代码:

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

这是你需要的吗?

于 2012-06-12T07:08:44.917 回答