response.redirect从一个asp.net web应用程序到另一个

本文关键字:net asp web 应用程序 另一个 一个 redirect response | 更新日期: 2023-09-27 18:19:38

我有一个VS 2011解决方案文件,其中包含两个项目,每个项目都是一个web应用程序的项目文件。一个是应用程序的旧版本,另一个是较新版本。当用户登录到旧版本时,根据其成员身份,他们可能会重定向到新版本。当他们登陆新网站时,他们不应该经过身份验证,而是直接进入应用程序中的页面。

为了处理这个问题,我使用了来自旧应用程序的response.redirect以及一个querystring,指示用户已经通过了身份验证。

旧版本中的代码:

Response.Redirect(sURL + "?Auth=" + sAuth, false);

我正在检查新应用程序的login.aspx.cs的page_load事件上的querystring(类似于"如果querystring authentication=true,则继续下一页")。然而,我仍然得到登录页面。

新应用程序页面代码加载事件:

if (Page.IsCrossPagePostBack)
{
    string sAuthenticate = Request.QueryString.Get("Auth").ToString();
            if (sAuthenticate == "1")
            {
                ByPassAuthentication();
            }
}

如何绕过登录页面?

response.redirect从一个asp.net web应用程序到另一个

假设这是一个FormsAuthentication网站,如果用户尚未登录FormsAuthAuthentication,ASP.Net将自动将其返回到登录页面。

因此,您至少还必须传递用户的登录名。

由于您是在querystring上传递此消息,因此必须非常小心,以确保只有response.redirect作为有效请求进行处理。您不希望任何用户能够通过弄清楚查询字符串参数是什么并以公司CEO的身份登录。

我们通过加密用户名和当前时间的组合来实现这一点,然后在接收端,我们解密并比较时间戳。如果超出允许范围(比如2分钟),我们将拒绝登录请求。

您可以通过右键单击解决方案,单击"属性",然后启动两个项目来调试它。看看这里在Visual Studio中同时运行两个项目。当然,这两个项目都有一个转折点

也许单次登录会对您有所帮助,请在此处查看我的问答。

单一登录

您可以尝试在新页面上检查"IsCrossPagePostBack"属性。。然后你就会知道回发的帖子是否是重定向。

一旦进入"新"站点,就需要对用户进行身份验证。假设您使用.NET Forms身份验证,您可能正在设置一个带有以下代码的身份验证cookie:

FormsAuthentication.SetAuthCookie(userLogin, true);

当你这样做时,它会为用户创建一个cookie,用于向它创建的网站发出后续请求。在您的案例中,是"旧"网站。因此,您要么需要创建一个新的authcookie,要么共享authcookie,这有一些细微差别,可能会很麻烦。