寻找防止恶意数据更改的想法:userA操纵(编辑或删除)属于userB的数据.由于我们在客户端上创建实体,因此我们需要将它们(或至少其中一些)分配给经过身份验证的用户.
例如:
var newItem = ds.createNewItem();
newItem.OwnerId(22); //this is the problem that I see.
newItem.Name("New Item");
newItem.Description("I just changed your item!");
... //and so on
ds.saveChanges();
Run Code Online (Sandbox Code Playgroud)
假设我们知道调用SaveChanges我们的API 的用户的身份,我们如何针对该用户验证我们的实体(新的或修改过的)?
首先想到的是根据用户的身份对实体属性进行子类化EFContextProvider,覆盖BeforeSaveEntity和检查OwnerId.例如:
if (entityInfo.Entity.GetType() == typeof(Item)
&& (entityInfo.EntityState == EntityState.Added
|| entityInfo.EntityState == EntityState.Modified)
&& ((Item)entityInfo.Entity).OwnerId != _currentUserId) {
return false
... //and so on
Run Code Online (Sandbox Code Playgroud)
如果使用这种方法,_currentUserId在新EFContextProvider类的构造函数中建立是否有意义?
一个想法或者更好的方法来解决这个问题?
我有一个工作的Web API,我正在转换为.Net Azure移动服务.API返回一个复杂的模型 - 具有属性的对象 - 其中一些是其他对象的集合.这与普通的Web API一样正常,但是使用Azure移动服务我遇到了一个问题,即我的某个模型没有将其所有属性序列化.
当我在控制器的return语句中设置断点时,我看到所有属性及其值都存在.这让我相信问题在于序列化(JSON).
return Request.CreateResponse(HttpStatusCode.OK, myModel);
Run Code Online (Sandbox Code Playgroud)
正在序列化的属性示例:
public Guid Id { get; set; }
public IEntityDto ModelDto { get; set; } //this is an object with many properties all of which serialize
Run Code Online (Sandbox Code Playgroud)
未序列化的属性示例:
public ItemStatus Status { get; set; } //this is an enum
public string Message { get; set; }
public string TestProp { get; set; } //this is a simple string property I added to help debug
Run Code Online (Sandbox Code Playgroud)
我怎样才能进一步调试这个,以便我可以看到为什么要排除这些属性?
注意:目前我仍在本地运行,而不是在Azure上运行.这是使用Visual Studio 2013 Update …
我正在尝试让 Cosmos DB Emulator 在 Docker for Windows 上运行,但我没有任何运气。我在这里遵循命令:
https://docs.microsoft.com/en-us/azure/documentdb/documentdb-nosql-local-emulator
具体来说:
md %LOCALAPPDATA%\DocumentDBEmulatorCert 2>nul
docker run -v %LOCALAPPDATA%\DocumentDBEmulatorCert:c:\DocumentDBEmulator\DocumentDBEmulatorCert -P -t -i mominag/documentdb_emulator
Run Code Online (Sandbox Code Playgroud)
我从 Docker 收到各种错误,包括“无效的绑定安装”。命令本身似乎不对,所以我尝试更改mominag/documentdb_emulator为,microsoft/azure-documentdb-emulator但没有奏效。 这是我第一次真正尝试使用 Docker,这无济于事。
我还在 GitHub 上查看了以下内容,它看起来像 Microsoft 文档中的命令源。
https://github.com/Azure/azure-documentdb-emulator-docker
更新: 这是我正在运行的命令和返回的错误。
PS C:\> md %LOCALAPPDATA%\DocumentDBEmulatorCert 2>nul
out-file : FileStream was asked to open a device that was not a file. For support for devices like 'com1:' or 'lpt1:',
call CreateFile, then use the FileStream constructors that take an OS handle as an …Run Code Online (Sandbox Code Playgroud) 我已经在我的 Android 设备上安装了 PWA,我想在桌面上的 Chrome 中远程调试它。当我在 Chrome 开发工具中连接到我的设备时,我看到的只是在我的 Android 设备上的 Chrome 中打开的选项卡。我没有看到已安装的 PWA 实例 - “添加到主屏幕” 有没有办法调试已安装的实例?