SharePoint 2010授权问题

时间:2011-08-31 22:24:33

标签: sharepoint-2010 authorization

假设我在sharepoint网站上有2个页面。我们将它们称为页面A和B.我们使用基于Windows的身份验证机制。假设我有2个已经过身份验证的用户X& Y.在活动目录中将某些属性设置为1的用户应该可以看到页面A.只有那些没有将此属性设置为1的用户才能看到页面B.让我们将此属性称为SpecialUser。如果给定用户的SpecialUser为1,则用户应该只能看到页面A而不是页面B.如果SpecialUser有任何其他值,用户应该只能看到页面B而不是页面A.

在这种情况下,用户X的属性SpecialUser设置为1而用户Y没有。因此,用户X应该只能看到页面A而用户Y只能看到页面B.

活动目录中没有组仅包含SpecialUser属性值设置为1的用户。我们不想创建sharepoint组并手动添加这些用户。

鉴于这些限制,我们如何才能获得此授权?我想可能需要自定义编码。如果需要自定义编码,我该如何处理。如果没有,解决方案是什么?

2 个答案:

答案 0 :(得分:1)

如果您的Web应用程序可以设置为使用声明模式而不是经典模式,则应该能够在没有自定义编码的情况下实现此目的,因为在页面上设置权限时,Active Directory属性可用作声明。 / p>

否则将需要自定义编码。您可以创建放置在页面上的自定义Web部件,该部件可以重定向用户或为无效用户调用SPUtility.HandleAccessDenied(new UnauthorizedAccessException())。为了安全地修剪页面(使它们不可见),您需要在显示页面的任何菜单或Web部件中使用类似的逻辑。

如果Active Directory属性是SharePoint用户配置文件的一部分,则可以使用UserProfile类。否则,您可以使用System.DirectoryServices.AccountManagement来检索属性的值。

答案 1 :(得分:0)

我认为最简单的方法可能是坚持使用活动目录端。 Sharepoint身份验证可能有点变化无常。在我的头脑中,我可能会建议创建一个活动目录组,用于保存这些用户的列表。而不是手动更新它,你可以经常运行一次服务(每天一次?每小时一次?取决于你愿意过多久的身份验证)并检查活动目录中的用户列表是否有这个标志。然后,该服务将更新您用于身份验证的组。

可能有一种方法可以在Sharepoint开发的墙内更优雅地做到这一点,但我没有听说过类似的东西。