Asp.net mvc HomeController上的Authorize属性强制在AllowAnonymous控制器上登录

Asp.net mvc HomeController上的Authorize属性强制在AllowAnonymous控制器上登录,asp.net-mvc,authentication,authorize-attribute,Asp.net Mvc,Authentication,Authorize Attribute,我的mvc 5应用程序的HomeController具有[Authorize]属性 [Authorize] public class HomeController : Controller SimpleControl是以下内容(简单测试): 当我直接浏览到时,为什么我必须登录 我必须额外的“强制认证码”或过滤器注册 当我删除HomeController上的[Authorization]时,SimpleController工作正常,无需登录您可能已在位于App_Start文件夹的FilterCo

我的mvc 5应用程序的HomeController具有[Authorize]属性

[Authorize]
public class HomeController : Controller
SimpleControl是以下内容(简单测试):

当我直接浏览到时,为什么我必须登录

我必须额外的“强制认证码”或过滤器注册


当我删除HomeController上的[Authorization]时,SimpleController工作正常,无需登录

您可能已在位于App_Start文件夹的FilterConfig.cs中配置了全局授权筛选器

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
    }
}

对一个控制器的授权要求与另一个控制器无关。但是,仅当您还添加了
[Authorize]
时才需要
[AllowAnonymous]
。如果控制器或操作不需要身份验证,请删除
[AllowAnonymous]
属性。我知道,但奇怪的是,当我删除HomeController上的[Authorize]时,SimpleController工作正常,无需登录。您在
SimpleControl
视图中调用的
HomeController
中是否有任何子操作?所有子操作都不应具有
[Authorize]
,或者如果它们位于用
[Authorize]
修饰的控制器中,则应使用
[AllowAnonymous]
修饰。任何子操作都不需要授权。它必须始终是可选的。不,在SimpleControl的视图中,它几乎是空的,只有一个h1标记和一个p标记来显示一些文本,不确定接下来要告诉您什么。控制器是完全独立的。除非您以某种方式从
SimpleControl
(子操作等)执行
HomeController
HomeController
将永远不会被实例化,更不用说将其授权要求强制到
SimpleControl
。你的问题中没有涉及到其他事情。
public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
    }
}