Asp.net mvc HomeController上的Authorize属性强制在AllowAnonymous控制器上登录
我的mvc 5应用程序的HomeController具有[Authorize]属性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
[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());
}
}