为什么 Response.Redirect("Pagename.aspx") 不起作用

发布于 2024-07-30 08:43:51 字数 588 浏览 3 评论 0 原文

我有一个应用程序,成功登录后用户将被重定向到 Home.aspx。 现在,如果我尝试 Response.Redirect("Home.aspx") 它不起作用,但如果我尝试 FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);..其工作。 现在我的问题是为什么 Response.Redirect() 不起作用? 我知道 FormsAuthentication.RedirectFromLoginPage 所做的不仅仅是登录,它还设置 cookie,并且还重定向到登录页面,但为什么 Redirct() 不起作用? web.config:

<authentication mode="Forms">
  <forms loginUrl="LogIn.aspx" defaultUrl="Home.aspx" path="/"></forms>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

有人可以帮忙吗?

I have one application where after successful Login user will be redirected to Home.aspx.
Now if I try Response.Redirect("Home.aspx") it doesnt work, But if I try
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);..its working.
Now my question is why Response.Redirect() is not working?
I know FormsAuthentication.RedirectFromLoginPage do much more than Login, it also sets cookie,and also redirects to Login Page, but why Redirct() is not working?
web.config:

<authentication mode="Forms">
  <forms loginUrl="LogIn.aspx" defaultUrl="Home.aspx" path="/"></forms>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

Can somebody help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

四叶草在未来唯美盛开 2024-08-06 08:43:51

你已经差不多有了答案了。

Response.Redirect 不会设置身份验证 cookie,因此当加载 Home.aspx 时,它会失败身份验证并将您重定向回登录页面。

要使用response.redirect,您必须自己管理cookie,示例来自 https://web.archive.org/web/20210513002246/https://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))

< strong>编辑:

要回答评论中的问题,如果您将 true 作为第二个参数传递给 RedirectFromLoginPage,则 cookie 将设置为永不过期,并且您无需再次登录。

FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true)

You already have the answer pretty much.

Response.Redirect does not set the authentication cookie so when Home.aspx is loading it fails authentication and will redirect you back to the login page.

To use response.redirect, you will have to manage the cookie yourself, an example from https://web.archive.org/web/20210513002246/https://www.4guysfromrolla.com/webtech/110701-1.3.shtml is:

Dim cookie As HttpCookie = FormsAuthentication.GetAuthCookie(UserName.Text, _
                        chkPersistCookie.Checked)
Response.Cookies.Add (cookie)
Response.Redirect(FormsAuthentication.GetRedirectUrl (UserName.Text, _
                        chkPersistCookie.Checked))

EDIT:

To answer the question in your comment, if you pass true as the second parameter to RedirectFromLoginPage then the cookie will be set to never expire, and you won't need to login again.

FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文