我有一个应用程序,成功登录后,用户将被重定向到Home.aspx。 现在,如果我尝试Response.Redirect(“Home.aspx”)它不起作用,但如果我尝试 FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,false); ..工作正常。 现在我的问题是为什么Response.Redirect()不起作用? 我知道FormsAuthentication.RedirectFromLoginPage比Login更多,它还设置了cookie,还重定向到Login Page,但为什么Redirct()不工作? web.config中:
<authentication mode="Forms">
<forms loginUrl="LogIn.aspx" defaultUrl="Home.aspx" path="/"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
有人可以帮忙吗?
答案 0 :(得分:4)
你已经有了答案。
Response.Redirect没有设置身份验证cookie,因此当Home.aspx加载时,身份验证失败,并将您重定向回登录页面。
要使用response.redirect,您必须自己管理Cookie,http://www.4guysfromrolla.com/webtech/110701-1.3.shtml的示例是:
Dim cookie As HttpCookie = FormsAuthentication.GetAuthCookie(UserName.Text, _
chkPersistCookie.Checked)
Response.Cookies.Add (cookie)
Response.Redirect(FormsAuthentication.GetRedirectUrl (UserName.Text, _
chkPersistCookie.Checked))
修改强>
要回答评论中的问题,如果将第二个参数传递给RedirectFromLoginPage,则cookie将被设置为永不过期,您无需再次登录。
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true)