我正在开发一个Web应用程序,我希望当用户登录时,UserID应该存储在Session中。我知道如何创建Session。
Session["UserID"] = myvalue;
但我想要在每个页面上使用它。所以我不想在每个页面上编写代码或检查会话可用性。 Global.asax文件会帮助我吗?
如果我在Session_Start()
中写会话,那么所有页面都可以访问吗?如果过期则返回登录页面。
只需要适当的指导。感谢
答案 0 :(得分: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
)。
答案 1 :(得分:0)
我曾经写过一个单独的类来处理会话并将其作为属性返回。我可以在课堂上写下所有条件。