我正在尝试使用策略获取 User.Group,以便我可以根据“只读”或“完全访问”组的成员身份限制对 CRUD 操作的访问。
所有 Microsoft Docs 都声明您可以通过访问 @(context.User) 以及您想要的任何属性来获取用户上下文。我提出的政策是这样的:
<policies>
<inbound>
<rewrite-uri template="/views/foo" />
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<choose>
<when condition="@(context.User.Groups.Select(g => g.Name).Contains("Read-Only-Group"))">
<return-response>
<set-status code="403" reason="Unauthorized" />
<set-body>You do not have write access - this operation is not available</set-body>
</return-response>
</when>
</choose>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
我遇到的问题是,无论我尝试在策略中实施哪个基本示例,每当我尝试与用户做任何事情时,都会收到“错误 500 - 对象未设置为对象实例”。我明白这意味着我的用户对象没有被填充,但我不明白为什么。
即使我参考 Microsoft 页面上的基本示例来设置一些包含产品名称和用户 ID 的标题,它们也会失败并出现相同的错误。这些页面不包含有关访问用户对象所需的其他步骤的任何信息。
如何访问这些项目?