使用 Sharepoint 列表事件处理程序指定项目级别权限,但指定到用户具有贡献权限的列表
- 我有一个用户具有贡献权限的列表
- 我有一个事件处理程序,它通过以下方式更改添加或更新列表上的事件的项目级别权限 2.a CurrentlistItem.BreakRoleInheritance(true); 2.b 并通过将用户添加到该列表中,
如果添加的用户具有贡献权,则上面的不起作用 但如果用户拥有完全控制权,则有效。
我认为解决方案可能是由系统管理员用户运行这些特权调用。
我该如何解决这个问题,请指导,谢谢。
//阿米特
- I have a List to which users have contribute rights
- I have a Event Handler which changes the Item Level Permissions on adding or Updating events on list by
2.a CurrentlistItem.BreakRoleInheritance(true);
2.b and by adding users to that list
Now above does not work if user who is adding has rights of contribute
but works if users has full control.
I think a solution could be to run these privileged calls by system admin user.
How can i solve this problem , Please guide, Thanks.
//Amit
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过RunWithElevatedPrivileges?请记住在其中运行尽可能少的代码。
Have you tried RunWithElevatedPrivileges? Just remember to run as little code as possible within it.
仅使用 RunWithElevatedPrivileges 运行代码是不够的。凭据信息保存在大多数 SPxxxx 对象(包括 SPWeb、SPListItem 等)直接或间接使用的 SPSite 对象内。为了修改项目权限,您必须重新创建在 RunWithElevatedPrivileges 中使用的任何 SPSite、SPListItem、SPWeb,仅使用由事件处理程序提供的 ID。
Just running your code using RunWithElevatedPrivileges is not enough. Credential info is kept inside the SPSite object that is used directly or indirectly by most SPxxxx objects, including SPWeb, SPListItem etc. In order to modify item permissions you will have to recreate any SPSite, SPListItem, SPWeb you use inside RunWithElevatedPrivileges, using only the IDs provided by the event handler.