阻止用户激活Sharepoint中的功能

时间:2010-05-28 11:45:17

标签: sharepoint deployment solution

如果我在服务器场级别部署解决方案,是否有办法阻止各种网站集的所有者激活该解决方案中的功能?

3 个答案:

答案 0 :(得分:3)

阻止网站集用户激活某个功能的一种简单方法是将其标记为隐藏。这些功能实际上只允许服务器场管理员通过STSADM命令激活。

要隐藏功能,请将Feature元素的Hidden属性更新为“TRUE”,如下所示:

<Feature 
      Id="AD2146D-62DA-4911-DBC1-AE177DE40084"
      Title="Restricted Web Parts" 
      Hidden="TRUE"
      .../>

或者,如果您使用的是SharePoint 2010,则可以使用功能包通过将一组功能定位到特定用户集来解决此问题。

答案 1 :(得分:1)

答案 2 :(得分:0)

如果在功能激活期间发生错误,它将不会激活该功能,并将收回可能已作为Elements Manifest的一部分部署的任何效果。

因此,通过狡猾的使用,您可以使用功能接收器的FeatureActivated部分来检查谁正在激活它,并抛出一个UnauthorizedAccessException,并带有相应的错误消息,详细说明无法激活该功能的原因。这将显示为标准的SharePoint错误页面,其中包含您指定的消息。如果您在功能上已经有功能接收器,则需要在FeatureActivated部分的开头附加此功能,以便不会发生任何编程操作(与元素清单不同,这些不会因激活失败而收回)。

如果您之前没有使用过功能接收器,则只需要两个部分即可建立它。

  1. 在功能的功能XML中,将以下两个属性添加到功能节点。

    ReceiverAssembly=(four-part-assembly-string)
    ReceiverClass=(full namespace.class name of receiver class)
    
  2. 写一个接收器类。这继承自SPFeatureReceiver,在FeatureActivatedFeatureDeactivatingFeatureInstalledFeatureUninstalling中有4个必需的覆盖。您不必为过去3做任何事情。您将使用FeatureActivated方法编写安全检查。

相关问题