我想用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
}
答案 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()
}
}
这是你需要的吗?