提升当前用户在MOSS中代码的运行权限
2008-11-07 15:58
246 查看
在编写WebPart或EventHandler时,当前登录网站的是一个只具有普通权限如查看而没有编辑添加权限的用户(如:yuana),而在这个网站中存在一个利用当前登录网站用户的权限去执行向某列表或文档库中添加新记录的WebPart里的代码,但是这时当前登录的用户yuana并没有相应的对列表或文档库添加新记录的权限,这时就要在WebPart的代码里做文章了,这就是我要提到的模拟提升当前用户的权限以更高的权限来运行代码。
在MOSS代码中用来提升权限,模拟成站点管理员的权限,在这过程需要用户MOSS里的对象模型里的SPSecurity.RunWithElevatedPrivileges来进行。SPSecurity.RunWithElevatedPrivileges对象是可以将当前用户在代码里的安全上下文凭据提升模拟成当前站点的管理员的权限运行此代码。
如第一种情况:
//模拟提升权限
SPSecurity.RunWithElevatedPrivileges(delegate
{
//创建指定站点集
using (SPSite site = new SPSite("http://crmg-ea/mdms"))
{
//打开网站
using (SPWeb web = site.OpenWeb())
{
//允许更新网站
web.AllowUnsafeUpdates = true;
//打开所属的文档库
SPList list = web.Lists[ListName];
………….
web.AllowUnsafeUpdates = false;
}
}
});
这种情况下创建的SPSite对象会以全新的身份就是以站点管理员(SPSAdmin)的身份来运行下面的方法体的,而不是当前登录用户真正在此网站里的权限。
如第二种情况:
//创建指定站点集
using (SPSite site = new SPSite("http://crmg-ea/mdms"))
{
//模拟提升权限
SPSecurity.RunWithElevatedPrivileges(delegate
{
//打开网站
using (SPWeb web = site.OpenWeb())
{
//允许更新网站
web.AllowUnsafeUpdates = true;
//打开所属的文档库
SPList list = web.Lists[ListName];
………….
web.AllowUnsafeUpdates = false;
}
});
}
这种情况那么所创建的用户安全上下文的权限就是以当前登录用户在此网站中真正实际权限来运行接下来的代码方法体,虽然代码中创建的SPWeb对象打开网站是在SPSecurity.RunWithElevatedPrivileges模拟权限的方法块中运行,但根据代码的运行结果可以看出SPSecurity.RunWithElevatedPrivileges对象并没有起到提升权限的效果。
这两种说明了在SPSecurity.RunWithElevatedPrivileges对象方法块中创建站点SPSite对象所产生的运行效果是完全不同的。
[原文地址]
在MOSS代码中用来提升权限,模拟成站点管理员的权限,在这过程需要用户MOSS里的对象模型里的SPSecurity.RunWithElevatedPrivileges来进行。SPSecurity.RunWithElevatedPrivileges对象是可以将当前用户在代码里的安全上下文凭据提升模拟成当前站点的管理员的权限运行此代码。
如第一种情况:
//模拟提升权限
SPSecurity.RunWithElevatedPrivileges(delegate
{
//创建指定站点集
using (SPSite site = new SPSite("http://crmg-ea/mdms"))
{
//打开网站
using (SPWeb web = site.OpenWeb())
{
//允许更新网站
web.AllowUnsafeUpdates = true;
//打开所属的文档库
SPList list = web.Lists[ListName];
………….
web.AllowUnsafeUpdates = false;
}
}
});
这种情况下创建的SPSite对象会以全新的身份就是以站点管理员(SPSAdmin)的身份来运行下面的方法体的,而不是当前登录用户真正在此网站里的权限。
如第二种情况:
//创建指定站点集
using (SPSite site = new SPSite("http://crmg-ea/mdms"))
{
//模拟提升权限
SPSecurity.RunWithElevatedPrivileges(delegate
{
//打开网站
using (SPWeb web = site.OpenWeb())
{
//允许更新网站
web.AllowUnsafeUpdates = true;
//打开所属的文档库
SPList list = web.Lists[ListName];
………….
web.AllowUnsafeUpdates = false;
}
});
}
这种情况那么所创建的用户安全上下文的权限就是以当前登录用户在此网站中真正实际权限来运行接下来的代码方法体,虽然代码中创建的SPWeb对象打开网站是在SPSecurity.RunWithElevatedPrivileges模拟权限的方法块中运行,但根据代码的运行结果可以看出SPSecurity.RunWithElevatedPrivileges对象并没有起到提升权限的效果。
这两种说明了在SPSecurity.RunWithElevatedPrivileges对象方法块中创建站点SPSite对象所产生的运行效果是完全不同的。
[原文地址]
相关文章推荐
- 提升当前用户在MOSS中代码的运行权限
- 提升当前用户在MOSS中代码的运行权限
- MOSS 中提升代码的运行权限
- MOSS中提升代码的运行权限
- MOSS中提升代码的运行权限
- :让一个运行在SYSTEM权限下的进程与当前用户的桌面进行交互 代码:
- MOSS中代码运行的权限提升(半摘)
- MOSS/Sharepoint 开发中代码运行的权限级别的讨论
- 利用ShellExecuteEx手动提升用户特权,以管理员权限来运行程序
- 提升域用户运行特定软件的权限
- Moss2007 提升代码的运行权限,实现模拟管理员身份的功能
- ssh+maven+annotation+shiro搭建运行用户登录权限验证代码demo下载
- 提升MOSS中运行权限
- 多个业务子系统的集中统一管理用户权限,SQL脚本批量事务运行的参考代码
- 利用ShellExecuteEx手动提升用户特权,以管理员权限来运行程序。win7会有UAC弹窗
- 转--让一个运行在SYSTEM权限下的进程与当前用户的桌面进行交互
- sharepoint 代码提升匿名用户、只读用户修改列表的权限
- 记录一个在SharePoint的代码中提升运行权限的方法
- moss中判断当前用户是否有访问某web的权限
- win8 解决文件夹无法访问,安装使用软件莫名报错的问题 【提升当前用户权限】