代码改变世界

session保存登录

2010-10-31 11:57  elivsit  阅读(1429)  评论(0编辑  收藏  举报
代码很简单: if (bResult == true) //登录的用户名和密码正确 { //保存登录的用户名 Session["LoginUser"] = FormatString.Replace(txtLoginUser.Text); //这里就是给session赋值了.我对登录用户进行了一些安全处理 //转到管理首页 Response.Redirect("Admin_Index.Aspx"); } else { lblErr.Text = Message.Show("用户名或密码错误!"); ShowValidate(); //重新显示验证码 } 那如何在页面判断是否登录呢?代码更简单,如下: if(Session["LoginUser"] == null) //上面Session名字用LoginUser,这里的名字要和上面的相同,可以随便改,保持一致就行了,注意:Session["LoginUser"]后面,没有ToString()哦,你要是加上的话,就会出错了. { Response.Redirect("Login.Aspx"); //如果Session为空,则转到登陆页. } Session有可能会丢失的,解决办法: 1。打开web.config文件,设置如下: 2。打开“控制面板--管理工具--服务”,找到ASP.NET State Service这个服务,将其设为自动启动。 这样以后再刷新页面就不会丢失Session了. 简单写了个 前台:

后台: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["User"] == null) Label1.Text = "你好"; } } protected void Button1_Click(object sender, EventArgs e) { if (!String.IsNullOrEmpty(TextBox1.Text.Trim())) { Session["User"] = TextBox1.Text; Label1.Text = "你好," + TextBox1.Text; } } 大家知道,开发一个具有管理功能的Web就必须设定各种权限,在此我使用的是Session来设定 Session简介: 简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串。 Session的初次使用: 这是我自己制作的管理系统的一部分代码 protected void Page_Load(object sender, EventArgs e) {//这是页面的初始化 if (!Page.IsPostBack) {//判断是否为初次执行 if (Object.Equals(Session["AdminName"], null)) {//判断在Session["AdminName"]是否存在值 Response.Redirect("ErrorPage.aspx", true); } else {//要是存在则记录下这个人的用户名 Name.Text = Session["AdminName"].ToString(); } } } 上述的代码比较简单,但是可以简单的进行权限配置。                ASP.NET中用Session进行页面传值 在页面之间传递信息有许多方式: 第一:可以使用QueryString 第二:可以使用Session 第三:Server.Transfer 这三种传值方式都有利有弊,下面我以我的经验给大家讲解一下 首先:QueryString QueryString是一种非常简单的传值方式,其缺点就是会把要传递的值显示在浏览器的地址栏中,并且此方法不能够传递对象。如果你想传递一个安全性不是那么重要或者是一个简单的数值时。使用此方式最好不过。 下面通过一个小例子来说明一下 1. 创建一个Web页面,叫SendMessage.aspx 2. 在页面内添加两个TextBox,叫TxtName,TxtEmail,与一个Button,叫Submit protected void Submit_Click(object sender, EventArgs e) { String Url = "ReceiveMessage.aspx?Name=" + TxtName.Text + "&Email=" + TxtEmail.Text; Response.Redirect(Url); } 3. 再创建一个接收信息页面,叫ReceiveMessage.aspx 4. 在页面内添加两个Label,叫LbName,LbEmail protected void Page_Load(object sender, EventArgs e) {//使用Request来接收由上个页面传递过来的值,分别显示在页面上 LbName.Text = Request.QueryString["Name"]; LbEmail.Text = Request.QueryString["Email"]; } 再次使用Session变量 使用Session变量传值是一种最常见的方式了,此种方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值Remove后,才消失 下面举例说明 1. 创建一个页面,叫SendSession 2. 在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit protected void Submit_Click(object sender, EventArgs e) {//可以使用Session的Add方法 Session["Name"] = TxtName.Text; //可以使用Session.Add("Name",TxtName.Text); Session["Email"] = TxtEmail.Text; //可以使用Session.Add("Email",TxtEmail.Text); Response.Redirect("ReceiveMessage.aspx"); } 3. 再创建一个页面,叫ReceiveMessage.aspx 4. 在页面内添加两个Label,叫LbName,LbEmail protected void Page_Load(object sender, EventArgs e) { LbName.Text = Session["Name"].ToString(); LbEmail.Text = Session["Email"].ToString(); Session["Name"].Remove(); Session["Email"].Remove(); //使用结束要清除Session中的值 } 这是使用Session传递数值,此方式耗费服务器的资源,尽量少使用 再次:使用Server.Transfer 这种传递方式有点复杂,但也可以是一种值传递方式 下面举例说明一下: 1. 创建一个页面,叫SendMessage.aspx 2. 在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit protected void Submit_Click(object sender, EventArgs e) { Server.Transfer("ReceiveMessage.aspx"); } 再添加一个属性 public String Name { Get { return TxtName.Text; } } public String Email { Get { return TxtEmail.Text; } } 3. 再创建一个页面,叫ReceiveMessage.aspx 4. 在页面放两个Label,叫LbName,LbEmail protected void Page_Load(object sender, EventArgs e) {//创建原始窗体的实例SendMessage wf1 //获得实例化的句柄 wf1=(SendMessage)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.Email; }