由于webpart,网站成员/访问者获得访问被拒绝错误页面

时间:2009-11-03 13:08:15

标签: sharepoint permissions web-parts access-denied

我开发了自定义webpart。我可以将它添加到页面,网站所有者可以查看页面没有问题。

然而,网站访问者/用户被重定向到访问被拒绝的错误页面。当然,我必须做一些普通用户不允许的事情。

但是让我感到困惑的是,当我在webpart构造函数或甚至变量声明中放置断点时,它不会被击中! (如果我尝试查看具有有限权限的页面)。但是在我的浏览器中,我获得了访问被拒绝页面。但是,如果我关闭该webpart,我立即可以访问该页面,一切正常。

这里有什么收获?我希望我可以通过调试器捕获异常,看看哪个语句是有罪的,但似乎webpart没有执行任何代码而且我得到了异常。

编辑:抱歉,结果调试器现在命中这些断点。不知道改变了什么,因为符号被加载了。

3 个答案:

答案 0 :(得分:2)

您的Sharepoint网站的信任级别是多少?您可能希望暂时提供Fulltrust以查看是否存在任何访问问题。

如果是,那么您可能会遇到代码访问安全性(CAS)问题。我的第一直觉是你的程序集没有必要的特权来为普通用户正确运行。 您可以使用manifestpart中的自定义CAS条目为webpart配置它,例如:如果要调用外部资源,则可能必须配置System.New.WebPermission并定义允许访问的URL。您可以在U2U site找到更多相关信息。

你的网站部分也做了什么?如果您尝试访问普通用户无权访问的资源(例如某个站点中的列表),则必须使用SPSecurity.RunWithElevatedPrivilages方法,以便获得必要的权限(小心创建新的该方法中的站点实例,以便Context正确填充。

答案 1 :(得分:0)

找到了解决方案。

事实证明,我想通过尝试访问该组用户来确定用户是否属于特定组。因为如果用户没有这样的权限,这是不可能的,它会抛出某种带有消息的内部异常

  

“无法评估表达式,因为   代码已优化或原生   frame位于调用堆栈的顶部。“

无论如何,我现在学会了循环SPUser.Groups (SPGroupCollection)并检查我们是否有一个匹配的组,而不是枚举组主体,看看他是否在里面。

答案 2 :(得分:0)

您需要向访问者群组授予权限(更新个人网站部分)。但是,不建议这样做。如果需要,您可以创建单独的权限级别并将其与访问者组关联。

干杯!!