asp.net表单身份验证重定向问题

时间:2010-08-14 12:08:21

标签: asp.net

在IIS中关闭默认文档功能,情况就是这样......

我项目的开始页面是A.aspx。我运行该项目,果然,A.aspx出现在浏览器的url中。尽管如此,A.aspx发现没有用户登录并重定向到Login.aspx,就像它应该的那样。

A.aspx:

    if (Session["UserStuff"] == null)
        Response.Redirect("~/Account/Login.aspx"); 

当用户登录时,login.aspx显示为BUT,代码为:

FormsAuthentication.RedirectFromLoginPage(txtUserName.Text,true);

始终重定向到“Default.aspx”而不是“A.aspx”

我已经检查过FormsAuthentication.GetRedirectUrl并且确定它返回“Default.aspx”

我很难过????

4 个答案:

答案 0 :(得分:6)

web.config中,您可以set the default page使用defaultUrl属性:

<authentication mode="Forms">
    <forms 
       loginUrl="login.aspx" 
       defaultUrl="a.aspx"
       protection="All"  
       timeout="30" 
    />
</authentication>

答案 1 :(得分:1)

答案 2 :(得分:0)

如果您正在使用FormsAuthentication,则应在web.config中定义您的设置。听起来你在DefaultUrl的web.config中有一个默认设置。您不应该需要会话重定向。 FormsAuthentication应该为您执行此操作。如果您没有找到会话并强制使用SignOut(),则不会有任何损害,但FormsAuthentication应执行此重定向。

答案 3 :(得分:0)

根据我的理解,当用户被重定向到您的登录屏幕时,表单身份验证机制会将用户最初访问的页面的URL添加到他们用户尝试访问的登录URL。例如,如果您有一个登录页面:http; // bob / login.aspx,并且用户试图访问http; // bob / showmethemoney.aspx,那么它们将被重定向到http; // bob / login。 ASPX?RETURNURL = showmethemoney.aspx。因此,如果您在用户登录后使用ReturnUrl重定向用户,则用户将始终返回到他们最初尝试访问的资源。