• 在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

     

  • 相关阅读:
    Discuz热搜在哪里设置?
    Discuz如何设置帖子隐藏回复可见或部分可见方法
    新版Discuz!应用中心接入教程(转)
    Diszuz管理面版被锁怎么办?
    vs 2019 调试无法查看变量
    Google Docs 的格式刷快捷键
    chrome 的常用快捷键
    Activiti 数据库表结构
    activiti 报 next dbid
    尚硅谷Java基础_Day2
  • 原文地址:https://www.cnblogs.com/ocean/p/222028.html
Copyright © 2020-2023  润新知