我正在尝试向用户显示一个列出一些文档(节点)的表格。这些文档使用角色权限进行保护(右键单击 > 公共访问 > 角色权限),我只想显示该用户有权访问的文档。
在这里和那里检查之后,我发现没有任何“Node.Permissions”方式,所以你必须通过Access.HasAccess()。
我已经使用了它,并且我已经设置了权限,但是当我使用该方法时,它总是返回 true。我究竟做错了什么?
这是构建节点列表的代码,效果很好:
public static List<Node> GetAllNodeChildrenRecursively(int nodeId, string typeName)
{
var node = new Node(nodeId);
var lstNodes = new List<Node>();
foreach (Node childNode in node.Children)
{
var child = childNode;
if (child.NodeTypeAlias == typeName)
{
lstNodes.Add(childNode);
}
if (child.Children.Count > 0)
{
lstNodes.AddRange(GetAllNodeChildrenRecursively(childNode.Id, typeName));
}
}
return lstNodes;
}
这是删除我无法访问的代码:
var availableNodes = new List<Node>();
foreach(Node n in nodes)
{
if(Access.HasAccces(n.Id, memberId))
{
availableNodes.Add(n);
}
}
return availableNodes;
好吧,Access.HasAccess 总是返回 true,并且我用来测试的成员不是有权访问该节点的 MemberGroup 的一部分。我是否设置了错误的权限或没有正确检查它或什么?
我迷路了。