如果会话变量从web.config文件为空,如何重定向到登录页面?

时间:2011-08-05 19:04:47

标签: asp.net

我处理下一个问题,我有一个asp.net web项目,其中我有一个登录页面,根据登录它的用户将被重定向到主菜单页面,当用户插入用户和登录页面的文本框中的密码并单击登录按钮我将用户的数据保存到Session变量中,以便在下一页中使用它,如果我从不同于登录页面的其他页面运行应用程序,应用程序将崩溃因为没有Session变量。 我的问题是,如果Session变量为空,是否可以从Web配置重定向到登录页面?

3 个答案:

答案 0 :(得分:1)

您是否在解决方案中使用母版页?如果是这样,您可以将用户会话存储在母版页中,并在母版页的Page_Load上查看用户是否已登录。如果没有用户登录,则重定向到登录页面。

您也可以通过向解决方案添加Global.asax文件来实现此目的。在Global.asax文件的后台代码中,添加以下事件:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (HttpContext.Current.Session["user"] == null)
    {
        HttpContext.Current.Response.Redirect("/login.aspx");
    }
}

答案 1 :(得分:0)

你可以自己检查:

var valueIExpect = Session["MyKEY"] as whatevertype;

if(valueIexpect ==null)
Response.Redirect("Someplaceelse.aspx");

答案 2 :(得分:0)

您可能还想检查一些内置的ASP.NET身份验证提供程序,例如表单身份验证,因为它们带有您要查找的功能。

Forms Authentication Provider

使用表单身份验证提供程序,您可以指定默认登录页面以将未经身份验证的用户重定向到:

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH">
    </forms>
  </authentication>
</system.web>