小编use*_*640的帖子

防范恶意数据更改的策略

寻找防止恶意数据更改的想法: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类的构造函数中建立是否有意义?

一个想法或者更好的方法来解决这个问题?

breeze

3
推荐指数
1
解决办法
360
查看次数

Web API转换为Azure移动服务而不是序列化所有属性

我有一个工作的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 …

.net c# visual-studio asp.net-web-api azure-mobile-services

3
推荐指数
1
解决办法
769
查看次数

如何在 Docker for Windows 上运行 Cosmos DB Emulator?

我正在尝试让 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)

azure docker azure-cosmosdb

3
推荐指数
1
解决办法
2397
查看次数

如何远程调试已在 Android 上“添加到主屏幕”的 PWA?

我已经在我的 Android 设备上安装了 PWA,我想在桌面上的 Chrome 中远程调试它。当我在 Chrome 开发工具中连接到我的设备时,我看到的只是在我的 Android 设备上的 Chrome 中打开的选项卡。我没有看到已安装的 PWA 实例 - “添加到主屏幕” 有没有办法调试已安装的实例?

google-chrome-devtools progressive-web-apps

2
推荐指数
1
解决办法
1853
查看次数