gpt4 book ai didi

asp.net-mvc - MvcSiteMapProvider 导致 MVC4 网站出现授权问题

转载 作者:行者123 更新时间:2023-12-05 01:15:20 25 4
gpt4 key购买 nike

我正在尝试使用我的新 MVC4 网站实现 MvcSiteMapProvider,但我遇到了一些我似乎无法修复的问题。

我使用 Active Directory 设置了授权(目前没有角色提供者),并且一切正常。当您尝试访问登录页面以外的任何页面时,您将被重定向到登录页面。帐户 Controller 的操作方法具有 [allowAnonymous] 属性,以允许未经身份验证的用户访问它们,以便他们可以登录。

由于某些未知原因,将 MvcSiteMapProvider 添加到项目中会停止此操作,现在未经身份验证的用户可以访问任何页面。 MvcSiteMapProvider 创建的菜单可以正常工作,只有经过身份验证的用户才能看到它,但是如果未经身份验证的用户键入直接链接,他们不会像以前那样被重定向到登录页面。

我已经从项目中删除了 MvcSiteMapProvider 并且身份验证再次开始正常工作。我相信这与 MvcSiteMapProvider 以某种方式覆盖 authorizeAttribute 过滤器有关,但我不知道在哪里/如何。

我可以将 [Authorize] 放在 Controller 之上,重定向与 MvcSiteMapProvider 一起工作,但这与使用 MVC4 的全部原因背道而驰。

//this is supposed to set authorize for the entire app
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
}

我感觉这个问题来自 MvcSiteMapProvider/External/AuthorizeAttributeBuilder.cs,但我没有足够的经验来解决这个问题。

更新:事实证明我刚刚错误地设置了我的全局过滤器。由于某种原因,RegisterGlobalFilters 方法在我的 global.asax 文件中,所以我的 FilterConfig.cs 文件没有以下行:

filters.Add(new System.Web.Mvc.AuthorizeAttribute()); 

我从 global.asax 文件中删除了该方法,然后使用上述过滤器更新了 FilterConfig.cs 文件,现在一切都按预期工作。不知道我是怎么陷入这种情况的,但我很高兴我弄明白了。

mvcSiteMapProvider GitHub 项目上有人提到他让 MVC4 和 mvcSiteMapProvider 无缝工作,所以我创建了一个新的 MVC4 应用程序并在进行任何更改之前添加了 mvcSiteMapProvider,然后添加了授权全局过滤器。一切都按预期进行,所以我比较了项目并找到了错误的地方。希望此信息对某人有所帮助,但我对此表示怀疑,因为这是一个非常独特的案例。

最佳答案

原来我刚刚错误地设置了我的全局过滤器。由于某种原因,RegisterGlobalFilters 方法在我的 global.asax 文件中,因此我的 FilterConfig.cs 文件没有以下行:

filters.Add(new System.Web.Mvc.AuthorizeAttribute());我从我的 global.asax 文件中删除了该方法,然后使用上述过滤器更新了 FilterConfig.cs 文件,现在一切都按预期工作。不确定我是如何陷入这种情况的,但我很高兴我弄明白了。

mvcSiteMapProvider GitHub 项目上有人提到他让 MVC4 和 mvcSiteMapProvider 无缝工作,所以我创建了一个新的 MVC4 应用程序并在进行任何更改之前添加了 mvcSiteMapProvider,然后添加了授权全局过滤器。一切都按预期进行,所以我比较了项目并找到了错误的地方。希望此信息对某人有所帮助,但我对此表示怀疑,因为这是一个非常独特的案例。

关于asp.net-mvc - MvcSiteMapProvider 导致 MVC4 网站出现授权问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075463/

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