如何解析Breeze SaveBundle

如何解析Breeze SaveBundle,breeze,Breeze,我将breeze与EF一起使用,并在BeforeSaveEntity和BeforeSaveEntities中的ContextProvider中执行服务器端验证。这是可行的,但我正在寻找一种在更高级别上进行验证的方法,最好是在请求到达控制器之前 我已经有了一个定制的http模块,所有的请求都要通过这个模块。我正在自定义http模块中进行一些日志记录和身份验证。我的目标是在同一时间/地点添加一些授权验证 假设我有一个用户正在更新他的个人资料记录。我在身份验证cookie/令牌中有他的身份。配置文件I

我将breeze与EF一起使用,并在BeforeSaveEntity和BeforeSaveEntities中的ContextProvider中执行服务器端验证。这是可行的,但我正在寻找一种在更高级别上进行验证的方法,最好是在请求到达控制器之前

我已经有了一个定制的http模块,所有的请求都要通过这个模块。我正在自定义http模块中进行一些日志记录和身份验证。我的目标是在同一时间/地点添加一些授权验证

假设我有一个用户正在更新他的个人资料记录。我在身份验证cookie/令牌中有他的身份。配置文件ID(数据库PK)嵌入在请求体中传递的JSON中。我不能假设用户在发送之前没有恶意地将此配置文件ID值更改为客户端上的另一个值。所以我想取出这个ID并验证它是否是这个用户的ID

我在http模块中以JSON字符串的形式获取请求输入流。在这个字符串中包含所有breeze元素:实体数组、实体方面,当然还有我要查找的ID

是否有任何帮助工具可以帮助我解析这个json字符串?或者根据实体和属性名提取特定值?甚至重建包中包含的对象

谢谢

看了看微风。它使用一个名为
SaveWorkState
的公共类,该类使用两个参数构造:一个
ContextProvider
和一个
JArray
。JArray的内容是在savechanges期间发送到服务器的JSON中的“entities”属性

构建
SaveWorkState
后,您可以通过
EntityInfoGroups
属性访问
EntityInfo
对象

以下是相关代码:

var serializerSettings = BreezeConfig.Instance.GetJsonSerializerSettings();
var jsonSerializer = JsonSerializer.Create(serializerSettings);
var saveBundle = ... JObject constructed from the JSON posted to your controller ...;
var dynSaveBundle = (dynamic)saveBundle;
var entitiesArray = (JArray)dynSaveBundle.entities;
var contextProvider = ... EFContextProvider<> ...;
var saveWorkState = new SaveWorkState(contextProvider, entitiesArray);
var entityInfoGroups = saveWorkState.EntityInfoGroups;  // <- this is what you want.
var serializerSettings=BreezeConfig.Instance.GetJsonSerializerSettings();
var jsonSerializer=jsonSerializer.Create(serializerSettings);
var saveBundle=。。。从发布到控制器的JSON构造的JObject。。。;
var dynSaveBundle=(动态)saveBundle;
var entitiesArray=(JArray)dynSaveBundle.entities;
var contextProvider=。。。EFContextProvider。。。;
var saveWorkState=新的saveWorkState(contextProvider,entitiesArray);

var entityInfoGroups=saveWorkState.entityInfoGroups;//没有人服务器端验证非常重要,其他人是如何处理的?BeforeSaveEntity和BeforeSaveEntity?这是可行的,但在你到达那里之前,很多处理都会发生。