posts - 5,  comments - 5,  trackbacks - 0
近日遇到一个诡异的需求是这样的:
某个客户需要做一个搜索, 得到文档的信息
这个文档库可能是带权限的, 需要在显示结果的时候判断当前用户在这个文档库上是否有权限

而这个文档库可能放在一个wss网站上
只允许一个部门的人进入这个网站, 但是该文档库可以给其他部门的人加权限以便查看其中的文档

以下是用对象模型的方法判断文档库上的权限:
一般来说首先想到的方法肯定是这样的:
SPSite site = new SPSite("
http://mysite_url ");   // Line 1
SPWeb web = site.OpenWeb();                          // Line 2
SPListCollection lists = web.Lists;                       // Line 3
SPList list = lists["MyDocLib"];                            // Line 4
bool perm = list.Permissions.DoesUserHavePermission(SPRights.xxxx); 

但是, 对于上面提到的那种情况, 这种方法是有问题的
问题一:
该用户如果不是该网站成员的话, 上面的做法得不到网站
其表现就是webpart所在页面会反复弹出用户名密码框......即使你做了try-catch也没用, 截不下这个异常
问题二:
该用户不是该网站成员, 默认情况下不允许使用web.Lists[]这种方法, 会有异常

对于第一个问题解决如下, 插入一行代码:
site.CatchAccessDeniedException = false;    // Line 1.5
这个属性就像其名字一样, 嗯, 不罗嗦了, 就是可以拿到那个SPWeb对象了

对于第二个问题, 插入一行代码:
lists.ListsForCurrentUser = true;        // Line 3.5
这样再用web.Lists[]就能得到SPList对象, 然后再判权限就行了

上面两个对象模型估计一般情况下都是用不上的...只有在某些诡异需求的情况下可能会用到

转载:otec:Erucy
posted on 2006-11-29 11:20 曾科 阅读(286) 评论(0)  编辑  收藏 所属分类: SharePoint Portal Server

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

相册

.net

搜索

  •  

最新评论

阅读排行榜

评论排行榜