在WebPart中进行一些权限判断的问题小结

在WebPart中进行一些权限判断的问题小结

    在WebPart中,最主要就是访问SPWeb和SPList,用户可以分成匿名用户和登录用户。当权限不足时,我们可以采用模拟一个有权限的用户的身份来进行操作(通常是模拟管理员的)。在这个过程中,会存在一些问题,需要注意一下。下面是权限控制的分布图:

 

匿名Web

非匿名、A无权Web

非匿名、A有权Web

匿名列表

非匿名、A无权列表

非匿名、A有权列表

匿名

提示密码框

提示密码框

匿名模拟B

提示密码框

提示密码框

用户A

提示密码框

A模拟B

用户B

l         其中“可”表示可访问。

l         其中“提示密码框”表示访问的时候会弹出输入用户名密码的输入框,不输入用户名、密码就不能访问页面。

l         其中“否”表示不能访问数据,但是在webpart中会提示“列表不存在或者列表无权限访问”。

 

从上表发现两个问题:

l         匿名用户无法模拟身份,在身份模拟后,web和列表仍然没有权限访问。经过和上海技术支持中心的确认,这是一个bug来的,并且是准备在下一版本中修复的Bug。所以要用匿名用户模拟管理员身份访问SPWeb的同志要注意了。

l         在不进行身份模拟的情况下很难通过用户自身判断自己是否对一个web具有访问权限。因为web的权限存放在SPWeb.Permissions中。但是要获得SPWeb.Permission,就必须首先获得SPWeb对象,而如果用户没有权限访问此Web,则在获得SPWeb对象的时候会提示用户输入用户名密码。这就形成了一个怪圈,即一个用户要获得是否有某个SPWeb“访问权限”,就必须先获得这个SPWeb对象,而要获得这个SPWeb对象的前提又是必须这个用户对此SPWeb具有“访问权限”。这个至少从我的研究上看好像是没办法的,不知道各位高人是否有办法。

   欢迎访问海洋工作室( http://www.oceanstudio.net

 

posted on 2005-08-24 18:42  ocean  阅读(2966)  评论(1编辑  收藏  举报

导航