我找到了以下文档:CosmosDB grant permission to multiple resources? 那里的答案指出,在资源令牌代理获取用户的权限提要并将其发送回客户端后:
FeedResponse<Permission> permFeed = await client.ReadPermissionFeedAsync(UriFactory.CreateUserUri("dbid", " userId"));
List<Permission> permList = permFeed.ToList();
客户端应用然后可以初始化 DocumentClient 类的实例并传递列表(前提是它将 Json 反序列化为 List<Permission>
)。
var jsonString = await response.Content.ReadAsStringAsync();
var permissions = JsonConvert.DeserializeObject<List<Permission>>(jsonString);
var client = new DocumentClient(new Uri(EndpointUri), permisions);
我遇到的问题是 Permission
类有一个 Token
属性,它只有一个 getter 而没有 setter 存在。以下源代码来自 Microsoft.Azure.Documents 命名空间。
namespace Microsoft.Azure.Documents
{
public class Permission : Resource
{
[JsonProperty(PropertyName = "resource")]
public string ResourceLink { get; set; }
[JsonProperty(PropertyName = "resourcePartitionKey")]
public PartitionKey ResourcePartitionKey { get; set; }
[JsonConverter(typeof (StringEnumConverter))]
[JsonProperty(PropertyName = "permissionMode")]
public PermissionMode PermissionMode { get; set; }
[JsonProperty(PropertyName = "_token")]
public string Token { get; } <------------------------------------- HERE
}
}
因此,尝试序列化 Token
字段时,复制的值为 null。
有人对此有任何解决方案吗?