0

我正在开发一个 Web 应用程序,我希望在用户登录时将 UserID 存储在 Session 中。我知道如何创建会话。

Session["UserID"] = myvalue;

但我希望在每一页上都使用它。所以我不想在每个页面上编写代码或检查会话可用性。Global.asax 文件对我有帮助吗?

如果我写会话,Session_Start()那么所有页面都可以访问吗?如果过期则返回登录页面。

只需要适当的指导。谢谢

4

2 回答 2

0

我强烈建议创建一个除登录之外的每个页面都继承的基本页面。这样,您只需在一个页面上创建会话变量代码,但任何继承它的页面都可以访问该代码。

用小例子编辑:

当您的用户通过身份验证时,您需要设置会话变量

目前您的页面可能看起来像这样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

您需要做的是创建一个单独的类文件,例如 basepage.cs,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public class basepage : System.Web.UI.Page
    {
        protected int GetItem()
        {
            return Convert.ToInt32(Session["myvalue"]);
        }
    }
}

然后你的原始页面看起来更像这样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : basepage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int whatINeed = GetItem();
        }
    }
}

如您所见,不是您的页面继承了System.Web.UI.Page它,而是继承了基页(而后者又继承了System.Web.UI.Page)。

于 2012-11-03T18:00:32.037 回答
0

我曾经编写一个单独的类来处理会话并将其作为属性返回。我可以写下课堂上的所有条件。

于 2012-11-03T18:08:52.920 回答