gpt4 book ai didi

sharepoint - HttpModule 事件 - 拦截共享点重定向到 accessdenied.aspx

转载 作者:行者123 更新时间:2023-12-01 02:52:57 28 4
gpt4 key购买 nike

对于我的 SharePoint 设置,我有一个无法访问网站首页的特定用户组。如果他们直接访问它,他们会从 SharePoint 获得标准的“拒绝访问”页面。

我正在开发一个 HttpModule 拦截对首页的访问,检查当前用户并将他重定向到他们有权访问的子站点。

我第一次尝试使用 PostAuthorizeRequest ,但似乎 SharePoint 会在较早的事件上触发,并且仍会重定向到“拒绝访问”页面。我已经对一个可以访问首页但仍然被重定向的用户进行了测试,并且重定向工作正常。

我需要捕获哪个事件才能在用户输入用户名/密码之后但在 SharePoint 重定向他们之前获取用户?

最佳答案

我建议您不要在代码中捕获“未经授权”事件,而是使用自定义错误。当用户被重定向到访问被拒绝页面时,SharePoint 实际上会抛出错误代码为“401”(未经授权)的错误。

在您的 web.config 中,您可以针对 401 错误配置应用程序的行为。如果您曾经在 Web 应用程序上做过自定义错误页面,那也是一样的。在您的 web.config 中查找 CustomError 节点并将其修改为如下所示:

<customErrors mode="On" defaultRedirect="~/_layouts/CustomErrorPage.aspx">
<error statusCode="401" redirect="~/_layouts/AccessDeniedPage.aspx" />
</customErrors>

然后创建您的 CustomErrorPage.aspx 和您的 AccessDeniedPage.aspx 并将它们部署到 12 hive。

在这些页面背后的代码中,您可以覆盖 PageLoad 事件以将它们重定向到您想要的任何位置:
protected void Page_Load(object sender, EventArgs e)
{
bool isLogged = HttpContext.Current.User.Identity.IsAuthenticated;
Response.Redirect("wherever");
}

请注意,此时如果需要,您仍然可以访问 SPContext 对象(并且我假设您希望根据用户的组成员身份编写特定代码)。

这不是 SharePoint 特定的行为。所有 ASP.NET 应用程序都以这种方式工作。使用站点范围的配置将允许您仅在需要运行时(即当访问被拒绝时)运行代码,而不是检查每个页面加载或类似的权限。

关于sharepoint - HttpModule 事件 - 拦截共享点重定向到 accessdenied.aspx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266734/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com