我想创建一个使用 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
}
为了安全地解决这个问题,你需要在服务器端(而不是在JayData中)执行此操作,并且你需要在.NET方式或你自己上实现身份验证 然后在onupdate服务器端方法中进行检查并制作如下内容:
C# 代码:
[Insert]
public void InsertCustomer(Customer customer) {
if (! customer.LoginName == Thread.CurrentPrincipal.Identity.Name ) {
throw new SomeValidtionException()
}
}
这是你需要的吗?
也许这不是您需要的,但我试一试:您可以使用附加到字段的自定义验证器函数来验证客户端上的字段。以下是您的操作方法:使用 JaySvcUtil 导入数据上下文后.exe修改实体并使用自定义验证器修饰字段:
$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