Asp.net mvc ReturnUrl=Default.aspx是否适用于MVC?

Asp.net mvc ReturnUrl=Default.aspx是否适用于MVC?,asp.net-mvc,authentication,returnurl,Asp.net Mvc,Authentication,Returnurl,我试图保护我的整个MVC站点,所以在主控制器之前,我添加了一个[Authorize]属性 现在,如果您从VisualStudio运行它或使用根URL导航(例如),它确实会重定向到登录页面,正如预期的那样。但是,重定向后地址栏中的URL如下所示: 我还没有对此进行测试,因为我还没有实现我的身份验证代码。然而,这对我来说似乎是个大问题,因为我的项目中没有default.aspx web.config中的身份验证标记如下所示: <authentication mode="Forms">

我试图保护我的整个MVC站点,所以在主控制器之前,我添加了一个[Authorize]属性

现在,如果您从VisualStudio运行它或使用根URL导航(例如),它确实会重定向到登录页面,正如预期的那样。但是,重定向后地址栏中的URL如下所示:

我还没有对此进行测试,因为我还没有实现我的身份验证代码。然而,这对我来说似乎是个大问题,因为我的项目中没有default.aspx

web.config中的身份验证标记如下所示:

<authentication mode="Forms">
   <forms loginUrl="~/Account/LogOn" defaultUrl="~/Home/Index" timeout="2880"/>
</authentication>

为什么它不选择此路由作为默认的返回URL而不是默认的.aspx?

ASP.NET(准确地说,
FormsAuthentication.RedirectFromLoginPage
)在存在
ReturnUrl
参数时总是忽略
web.config
中的
defaultUrl
设置。只有当您直接进入登录页面而不传递任何
ReturnUrl
参数时,您才会感到荣幸


ASP.NET MVC项目模板提供了一个空白的
Default.aspx
模板来处理类似IIS经典管道模式的请求。你应该没问题。

Hmmm。。我想我问的问题不对。我想我真正的问题是,如何将ReturnUrl设置为Home/Index而不是default.aspx?也就是说,当用户导航到根URL时,而不是特定的路由。(如果此人正在导航到特定路线,返回的URL是正确的。)@Cynthia:我明白你的意思。问题是,事实上,当您请求“/”时,Web服务器试图提供默认文档。ASP.NET MVC附带的默认模板在服务器上将请求透明地重写为“default.aspx”到“/”路由,并尝试执行该操作,但由于需要身份验证,它将使用当前URL作为返回URL(仍然是
default.aspx
)将用户重定向到登录页面。实际上,您可以得到您想要的(除了获得地址栏中显示的
default.aspx
)。在集成模式下,问题会少一些。好的,我试过了,Default.aspx会转到默认控制器/操作。所以没有关系!我以为它会爆炸,但显然不是。谢谢如果您对此感到困扰(地址栏中没有显示
default.aspx
),则应将“/”路由显式映射到一个单独的操作方法,该方法无需授权即可将用户重定向到“主页/索引”(使用
返回重定向(…)
并在默认调用之前添加一个
MapRoute
调用以处理“/”请求),并使用
[Authorize]
保护“主页/索引”。