在 SharePoint 中自定义审核
public override void FeatureActivated(SPFeatureReceiverProperties properties) { using (SPSite siteCollection = (SPSite)properties.Feature.Parent) { SPWeb TopLevelSite = siteCollection.RootWeb; // Turn on auditing flags. siteCollection.Audit.AuditFlags = SPAuditMaskType.All; siteCollection.Audit.Update(); // create permission levels SPRoleDefinition AuditorPermissions, AuditManagerPermissions; AuditorPermissions = CreatePermissionLevel( "Auditor Permissions", "Can view audit logs", "Read"); AuditManagerPermissions = CreatePermissionLevel( "Audit Manager Permissions", "Can configure auditing support", "Design", SPBasePermissions.ManageWeb); // create Auditors group SPGroup Auditors = CreateGroup( "Auditors", "for users who need to audit user activity"); SPRoleAssignment AuditorRoleAssignment = new SPRoleAssignment(Auditors); AuditorRoleAssignment.RoleDefinitionBindings.Add(AuditorPermissions); TopLevelSite.RoleAssignments.Add(AuditorRoleAssignment); // create Audit Managers group SPGroup AuditManagers = CreateGroup( "Audit Managers", "for users who configure WSS auditing support"); SPRoleAssignment AuditManagerRoleAssignment = new SPRoleAssignment(AuditManagers); AuditManagerRoleAssignment.RoleDefinitionBindings.Add( AuditManagerPermissions); TopLevelSite.RoleAssignments.Add(AuditManagersRoleAssignment);}?
?
?
<!-- Add Link to Site Setting Page --><CustomAction Id="SiteActionsToolbar" GroupId="SiteCollectionAdmin" Location="Microsoft.SharePoint.SiteSettings" Sequence="0" Rights="ManageWebs" Title="Audit Management" > <UrlAction Url="~sitecollection/_layouts/AuditingDemo/AuditConfig.aspx"/></CustomAction>?SPSite siteCollection = this.Site;if (radAuditingOff.Checked) { siteCollection.Audit.AuditFlags = SPAuditMaskType.None;}if (radAuditingOnFull.Checked) { siteCollection.Audit.AuditFlags = SPAuditMaskType.All;}if (radAuditingOnSelective.Checked) { siteCollection.Audit.AuditFlags = GetSelectiveAuditingFlags();}siteCollection.Audit.Update();?private SPAuditMaskType GetSelectiveAuditingFlags() { SPAuditMaskType AuditFlags = SPAuditMaskType.None; if (chkAuditView.Checked) { AuditFlags |= SPAuditMaskType.View; } if (chkAuditUpdate.Checked) { AuditFlags |= SPAuditMaskType.Update; } // Repeat for Copy, Move, Delete, Undelete, CheckIn, CheckOut, // Search, Workflow, SecurityChange, ProfileChange, SchemaChange return AuditFlags;}?<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <!-- Add Command to Site Actions Dropdown --> <CustomAction Id="AuditingSupport" GroupId="SiteActions" Location="Microsoft.SharePoint.StandardMenu" Sequence="1000" Control/></Elements>?public class SiteActionsCustomSubMenu : WebControl { protected override void OnLoad(EventArgs e) { this.EnsureChildControls(); base.OnLoad(e); } protected override void CreateChildControls() { SPSite siteCollection = SPContext.Current.Site; SPWeb site = SPContext.Current.Web; SPUser user = site.CurrentUser; // provide security trimming if (IsCurrentUserInGroup("Auditors") || IsCurrentUserInGroup("Audit Managers") || user.IsSiteAdmin) { string siteCollectionPath = siteCollection.Url; if (!siteCollectionPath.EndsWith(@"/")) siteCollectionPath += "/"; SubMenuTemplate smt = new SubMenuTemplate(); smt.Text = "Auditing Support"; smt.ID = "mnuAuditingSupport"; smt.Description = "Configure and View Auditing"; smt.ImageUrl = siteCollectionPath + @"_layouts/images/AuditingDemo/AfricanPith32.gif"; smt.Sequence = 400; MenuItemTemplate mit1 = new MenuItemTemplate(); mit1.ID = "mnuAuditLog"; mit1.Text = "Audit Log"; mit1.Description = "Inspect Audit Entries"; mit1.Sequence = 401; mit1.ClientOnClickNavigateUrl = siteCollectionPath + "_layouts/AuditingDemo/AuditLogViewer.aspx"; mit1.ImageUrl = siteCollectionPath + @"_layouts/images/AuditingDemo/Binoculars32.gif"; // add menu item to Controls collection smt.Controls.Add(mit1); // perform extra security trimming for menu for AuditConfig.aspx if (IsCurrentUserInGroup("Audit Managers") || user.IsSiteAdmin) { MenuItemTemplate mit2 = new MenuItemTemplate(); mit2.ID = "mnuAuditingConfiguration"; mit2.Text = "Auditing Configuration"; mit2.Description = "Enable/Disable Auditing"; mit2.Sequence = 402; mit2.ClientOnClickNavigateUrl = siteCollectionPath + "_layouts/AuditingDemo/AuditConfig.aspx"; mit2.ImageUrl = siteCollectionPath + @"_layouts/images/AuditingDemo/Compass32.gif"; smt.Controls.Add(mit2); } this.Controls.Add(smt); } } private bool IsCurrentUserInGroup(string GroupName) { SPWeb site = SPContext.Current.Web; foreach (SPGroup group in site.SiteGroups) { if (group.Name.Equals(GroupName)) { return group.ContainsCurrentUser; } } throw new ApplicationException("There is no group named " + GroupName); }}?