You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用TypeScript结合sp-pnp-node移除SharePoint文件夹用户直接访问权限

移除SharePoint文件夹的单独用户权限(TypeScript + PnP)

嘿,刚好我之前用PnP处理过类似的场景,你已经能分配权限的话,移除其实就是找到对应的角色分配然后删除就行。下面给你具体的步骤和代码示例:

首先要明确:用户的单独权限在SharePoint里是通过RoleAssignment对象来管理的,我们需要定位到文件夹下对应该用户的RoleAssignment,然后调用删除方法。

具体实现步骤

  • 先获取目标文件夹的PnP实例
  • 加载该文件夹的所有RoleAssignments
  • 遍历找到匹配目标用户的RoleAssignment(通过用户的LoginName或者ID)
  • 调用delete()方法移除该权限

TypeScript代码示例

import { sp } from "@pnp/sp";
import { IRoleAssignment } from "@pnp/sp/security";

// 定义移除权限的函数
async function removeFolderDirectPermission(folderRelativeUrl: string, userLoginName: string): Promise<void> {
    try {
        // 获取目标文件夹对象
        const folder = sp.web.getFolderByServerRelativeUrl(folderRelativeUrl);
        
        // 获取文件夹的所有角色分配
        const roleAssignments = await folder.roleAssignments.get();
        
        // 遍历找到对应用户的角色分配
        const targetAssignment = roleAssignments.find((ra: IRoleAssignment) => ra.Member.LoginName === userLoginName);
        
        if (!targetAssignment) {
            console.log(`用户 ${userLoginName} 没有该文件夹的单独权限`);
            return;
        }
        
        // 删除对应的角色分配
        await folder.roleAssignments.getById(targetAssignment.Id).delete();
        
        console.log(`已成功移除用户 ${userLoginName} 对文件夹 ${folderRelativeUrl} 的直接权限`);
    } catch (error) {
        console.error("移除权限时出错:", error);
        throw error;
    }
}

// 调用示例(替换成你的实际路径和用户登录名)
removeFolderDirectPermission("/sites/YourSite/Shared Documents/TargetFolder", "i:0#.f|membership|user@domain.com")
    .catch(err => console.error(err));

关键说明

  1. 用户LoginName格式:注意用户的LoginName通常是i:0#.f|membership|user@domain.com这种格式,你可以通过sp.web.siteUsers.getByEmail("user@domain.com")先获取用户的详细信息,拿到正确的LoginName或者ID。
  2. 权限检查:当前操作的账号需要有管理列表权限或者更高的权限(比如网站集管理员)才能删除他人的权限。
  3. 继承状态:如果文件夹还继承父级权限,那用户的权限可能来自父级,这种情况你需要先断开继承(folder.breakRoleInheritance(true),true表示保留现有权限),再删除单独添加的权限,但你说用户是单独权限,应该已经断开继承了。

内容的提问来源于stack exchange,提问作者Tania López

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:27:34