无法以访客用户身份查看主页(即使使用AllowAnonymous)

时间:2013-06-26 18:40:18

标签: c# asp.net-mvc-4 forms-authentication

使用C#.NET的新手,请耐心等待。

我正在构建一个简单的C#Web应用程序(MVC 4)。我的身份验证/授权有效 - 普通用户可以登录/注销/查看数据,只有管理员可以编辑数据库等。但是,访客用户无法查看主页。而是将guest重定向到登录页面 - 我在web.config中指定的。 (在我实现之前,用户只需转到错误页面。)。只有当用户登录时,他们才能真正看到主页。

由于某些原因,我[AllowAnonymous] 中的相应操作(Index()HomeController包括Application_BeginRequest()并不,而对某个操作执行相同操作在不同的控制器中确实可以为访客用户工作(例如登录页面显示)。

删除[授权]和/或[AllowAnonymous]不起作用。我也尝试在Global.asax中使用... namespace Portal.UI.Controllers { [Authorize] public class HomeController : Controller { [AllowAnonymous] public ActionResult Index() { return View(); } ... } } 但没有成功(甚至不确定我是否正确使用它)。有人可以帮我理解为什么主页会被封锁吗?没有其他页面存在访问问题。

HomeController.cs:

<system.web>
    <authentication mode="Forms">
      <!-- Login action is in another controller, AdminController -->
      <forms name="REDIRECT_TO_LOGIN" loginUrl="~/Admin/Login"
        protection="All" path="/" timeout="30">
      </forms>
    </authentication>
</system.web>

的web.config:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // ...
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }

    protected void Application_BeginRequest()
    {
        if (Request.AppRelativeCurrentExecutionFilePath == "~/")
            HttpContext.Current.RewritePath("/Home/Index");
    }
}

的Global.asax.cs:

{{1}}

1 个答案:

答案 0 :(得分:0)

错误警报 - 事实证明我在一段时间后修改了ControllerFactory的默认行为,这导致我的HomeController操作永远不会被执行。现在一切都很好。