目录
article
VisualStudio 开发 WebPart 之代码权限提升
VisualStudio 开发 WebPart 之代码权限提升
MOSS 环境下的代码默认是以当前访问用户的身份运行的,如果用户没有某个资源的访问权限,而代码中却调用了这个资源,那么页面就会禁止用户访问,为了避免这个问题,可以采用权限提升,强制代码以系统账号的身份运行。
权限提升的代码块:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//实例化新的站点集对象
using(SPSite elevatedsitecoll = new SPSite(SPContext.Current.Site.ID))
{
using(SPWeb elevatedWeb = elevatedsiteColl.OpenWeb(SPContext.Current.Web.ID))
{
//此处是以系统账号身份运行的代码
SPList list = elevatedWeb.Lists["通知"];
list.Items[0].Delete();
}
}
}
);
最近一个项目中遇到一个问题就是关于提升权限的。某一个列表,各种不同权限的用户都可以对它进行更新。在这个列表中有一个番号,每次添加内容时,就取最大的番号 +1,但是因为不同的用户只能看到自己权限下的记录内容,所以代码中取到的最大番号是自己权限下所能看到的最大番号。这样番号就设定得不正确了。像这种情况就必须采用权限提升来新建或者更新数据。
另外还有一个注意点,权限提升需要实例化新的 SPSite 类和 SPWeb 类,不能直接调用上下文对象 (SPContext),上下文对象始终会以当前用户身份运行。