0

假设我在母版页加载事件中。如果用户已登录,我需要将它们重定向到 Login.aspx,如果未登录,我需要将它们重定向到 Login.aspx。但首先,我需要知道他们试图访问哪个页面。

我怎样才能得到这些信息?

谢谢

4

3 回答 3

1

因此,您可以为所有页​​面创建一个基类,并在该类中覆盖 OnInit (EventArgs e) 方法。在此方法中,将检查用户是否在系统上签名的代码(通过检查表示用户的会话变量不为空),如果该变量为空,则执行重定向到登录页面。如果您采用这种方法,您的所有内容页面(登录页面除外)都必须继承自该基类。

我希望这可以帮助你。

public class BasePage : Page
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="e"></param>
    protected override void OnInit(EventArgs e)
    {
        if (Session["Usuario"] == null)
        {
            Response.Redirect(ResolveClientUrl("~/Login.aspx"));
        }        
    }
}
于 2013-02-07T16:02:00.753 回答
0

这有点令人困惑。您希望相同的母版页从内容页(例如 default.aspx)重定向到登录页(例如 Login.aspx)并从登录页重定向到内容页。你只需要做这些事情之一。

首先,您将需要 2 个母版页(或仅从 Login.aspx 中删除母版页),因为您将陷入递归循环。

假设用户试图访问您的站点,但他们没有登录。他们将​​被重定向到 Login.aspx,它会检查并查看他们没有登录,将他们重定向到 Login.aspx,等等。 ..

如果他们已经登录,则不需要从 Login.aspx 重定向,因为他们不应该首先访问此页面,除非他们没有。

最后,在主页面中执行快速检查以查看用户是否已登录,如果未登录,则重定向到登录页面并将他们请求的页面作为 url 的参数传递(如前所述,创建 Session 变量有效也)。

If (!userLoggedIn)
{
    Response.Redirect("Login.aspx?Url=" + Request.Url);
}

这会传入他们最初作为参数访问的 Url(例如 Login.aspx?Url=default.aspx)

然后在 Login.aspx

If (userSuccessfullyLoggedIn)
{
    Response.Redirect(Request.Params["Url"]);
}

这会将他们重定向到他们最初请求的页面(例如 default.aspx)

于 2013-02-07T14:38:37.337 回答
0

您可以使用Request.RawUrl获取当前请求的 URL。

if (Request.RawUrl.StartsWith("/login.aspx")){
   //Check whether user is logged in
}
于 2013-02-07T13:54:03.337 回答