成功登录后如何重定向到页面?

9
我对网页表单开发还不太熟悉,正在使用VS 2010中的ASP.NET Web应用程序模板创建一个项目。用户成功登录后,我希望将其重定向到我创建的页面。如何修改我的项目以在用户登录后进行重定向?非常感谢任何示例/教程等。谢谢!

可能是重复的问题:登录后将用户重定向到特定页面 - Talljoe
7个回答

12
为了在用户登录后简单地重定向到新页面,请使用登录控件的 DestinationPageUrl 属性... 假设您正在使用的是 Login 控件。
如果您需要执行更高级的操作,则可以使用登录控件的 OnLoggedIn 事件处理程序手动执行重定向,或添加任何用于事件日志记录等的代码。
如果您已经自己构建了登录控件,并且只是使用诸如文本框和按钮控件之类的东西,则可以在您的 Button_Click 事件中,只需使用 Response.Redirect("目标网址"); 就可以将用户带到新页面。

我们怎样才能从这里传递变量? - numerah

5

在检查登录后:

Response.Redirect("url");

如果,正如OP所说,您正在使用ASP.NET Web应用程序模板,则正在使用Login控件,该控件将忽略Response.Redirect()而选择DestinationPageUrl。 - Michael Paulukonis

1
  <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/Admin/Default.aspx">
</asp:Login>

转到属性并设置DestinationPageUrl。


1

我猜你正在使用ASP.NET登录控件。该控件有一个DestinationPageUrl属性,可以处理这个问题。如果登录成功,用户将被重定向到该属性提供的URL。


0

针对SharePoint农场解决方案开发

Page.Response.Redirect("url");

0
Server.Transfer( *url*) ?

(HttpServerUtility 上的方法)

我对 ASP.NET 知之甚少,但从我的 Java Web 开发经验来看,重定向是不好的,因为它涉及到另一个网络往返到浏览器和返回,而你真正想要的是在另一个页面中继续处理。

而且 Response.Redirect() 确实会向浏览器发出 302 响应代码(“请尝试这个其他 URL”)。太糟糕了。XP

Server.Transfer() 看起来像是 Response.Forward() 的 Java 版本。


这篇文章虽然有些旧,但我认为这个答案值得进一步澄清为什么不应该在登录中使用Server.Transfer。Server.Transfer在执行过程中与Response.Redirect的行为非常不同。Response.Redirect确实会发出额外的请求,但这是因为它调用浏览器进行重定向。然而,Server.Transfer像URL掩码一样工作,因为重定向是由服务器完成的。在这种情况下,浏览器仍将显示Login URL,但内容来自指定的url。附加信息:http://www.codeproject.com/Tips/724972/Difference-Between-Response-Redirect-and-Server-Tr - Daved
我认为在那种情况下,我会配置应用程序/服务器,在访问某些URL之前要求身份验证,这样做的好处是:(1)未经身份验证的用户可以直接发出资源的GET请求;(2)服务器会将用户重定向到身份验证页面,但记住原始请求的URL;(3)在认证后,服务器将在浏览器栏中显示原始页面和原始URL。但我不确定背后的原理是如何工作的;我们已经达到了我的知识极限。 :) - JohnL4

0
Response.Redirect() 的问题在于 302。在某些浏览器(例如 Chrome)中,这会导致新的会话 cookie 立即失效。
换句话说,使用该方法进行重定向会导致用户无法再登录,因此您没有达到目的!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接