MVC在超时后将授权用户重定向到错误的URL

时间:2009-05-26 18:07:26

标签: asp.net-mvc security forms-authentication

我已将我的MVC项目发布到IIS 6服务器。在应用程序MVCapp下运行。 Web项目获取网址:www.domain.com/MVCapp /.

我使用表单登录进行身份验证,并在发布后出现问题。

web.config如下:

<authentication mode="Forms">
<forms name="CTWebCookie" loginUrl="~/Account/Login" defaultUrl="~/Home/Index" slidingExpiration="true" protection="All" timeout="20"/>
</authentication> 

例如,如果我在操作中运行以下代码:

FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();

..一切正常,用户被重定向到www.domain.com/MVCapp/Account/Login。

但是,当身份验证超时时 - 在下一页请求时,用户将被重定向到www.domain.com/Account/Login。应用程序根目录未路由,并且URL指向IIS根目录。

如何在授权超时后让应用程序解析正确的URL,为什么在编程时签名出来并不能自动退出?

请建议。

2 个答案:

答案 0 :(得分:0)

ASP.NET MVC项目模板使用~/Account/Login。检查你的web.config:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" ... />
</authentication>

<强>更新:

IIS根目录(www.domain.com/)上是否有任何应用程序?如果是这样 - 尝试从IIS中删除此应用程序。您也可以在Site.Master中添加此行:

 <%= System.Web.Security.FormsAuthentication.LoginUrl %>

查看您的loginUrl是否是/ MVCapp / Account / Login或其他任何内容

希望这有帮助

答案 1 :(得分:0)

没关系,想通了(愚蠢的错误),谢谢你的帮助。

问题是登录页面上的一个javascript,它在asyncronous请求的情况下将页面重新加载为target.top。 javascript中的网址未正确解析。