用session保存信息并读出

第一次做多层架构的项目,什么也不太清楚,做登录页时,需要用session来保存用户信息,通过判断session中的有用信息,来决定让用户进入哪个页面和显示用户所拥有的权限。

1.Login.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
         用户名:<asp:TextBox runat="server" ID="txtUserName"></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="rfvUserName" ControlToValidate="txtUserName" ErrorMessage="用户账号不能为空,请输入您的用户账号!">
</asp:RequiredFieldValidator>
        
        
        <br/>
        密码:<asp:TextBox runat="server" ID="txtPassword" TextMode="Password"></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="rfvPassword" ControlToValidate="txtPassword" ErrorMessage="用户密码不能为空,请输入您的密码!"
Display="Dynamic"></asp:RequiredFieldValidator>
        <br/>
        <asp:CheckBox ID="CheckBox1" runat="server" Text="保存密码" 
             oncheckedchanged="CheckBox1_CheckedChanged" />
        <br/>
        <asp:Button runat="server" ID="btnLogin" Text="登录" οnclick="btnLogin_Click"/>
        <br />
       
       
    
    </div>
    </form>
</body>
</html>

2.Login.aspx.cs代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using ESchool.BLL;
using ESchool.Entity;
using System.Collections.Generic;

using System.Data;



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

    }

    protected void btnLogin_Click(object sender, EventArgs e)
    {
        //实例化业务逻辑层用户对象
        ESchool.BLL.BllUserInfo bllUserInfo = new BllUserInfo();
        
  
        //判断用户名,密码是否正确
        if (bllUserInfo.Login(this.txtUserName.Text, this.txtPassword.Text))
        {
            
            //以对象的形式将用户信息保存入session
            System.Web.HttpContext.Current.Session["UserInfo"] = bllUserInfo.SelectUserInfoByUserName(this.txtUserName.Text);
            //获取session中保存的用户信息,将Session["UserInfo"]转换成ESchool.Entity.UserInfo类。
            ESchool.Entity.UserInfo userInfo = Session["UserInfo"] as ESchool.Entity.UserInfo;



           
            //通过用户名将获取到的角色Id保存入session
            System.Web.HttpContext.Current.Session["UserRolesId"] = bllUserInfo.GetRolesIdByUserName(userInfo.UserName);
            //获取session中保存的用户角色信息,将Session["UserRolesId"]转换成List<int>类。
            List<int> roleId = Session["UserRolesId"] as List<int>;

            //判断用户身份(1代表学生,2代表老师),如果是学生,刚转入学生页,如果是老师,则转入教师页
            if (userInfo.Useridentity==1)
            {
                //跳转,在另一页面中显示session中所有内容。
                Response.Redirect("ReceiveMessage.aspx");
                
            }
            else
            {
                Response.Redirect("Default.aspx");
                
            }


            //Response.Write("<script>alert('登录成功')</script>");

          

         /*
            
            //将正确的用户名和密码保存在session中
           // System.Web.HttpContext.Current.Session["userName"] = this.txtUserName.Text;
            //Session["userName"] = this.txtUserName.Text;
            //Session["password"] = this.txtPassword.Text;
            //session的Add方法也可以保存。
            //Session.Add("userName", this.txtUserName.Text);
            //Session.Add("password", this.txtPassword.Text);
          */

  
         
        }

        else
        {
            Response.Write("<script>alert('用户名或密码错误,请重新输入。')</script>");
            //Response.Redirect("Login.aspx");
        }
    }

  
}


3.ReceiveMessage.aspx.cs代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using ESchool.Entity;
using System.Collections.Generic;


public partial class ReceiveMessage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
       
        获取session中保存的用户信息,将Session["UserInfo"]转换成ESchool.Entity.UserInfo类。
     ESchool.Entity.UserInfo userInfo = Session["UserInfo"] as ESchool.Entity.UserInfo;
     //获取session中保存的用户角色信息,将Session["UserRolesId"]转换成List<int>类
     List<int> roleId = Session["UserRolesId"] as List<int>;
        //输出session中保存的内容。
     Response.Write(userInfo.UserId + "<br/>" + userInfo.UserName + "<br/>" + userInfo.Password + "<br/>" + userInfo.Useridentity + "<br/>");


     //从session中取出角色Id
     if (Session["UserRolesId"] != null)
     {

             //遍历所有项然后输出。
             foreach (int role in roleId)
             {
                 Response.Write(role);
                 Response.Write("<br />");

             }
   
     }


        /*  死循环,内存完全被占用。
        //从session中取出角色Id
        if (Session["UserRolesId"] != null)
        {

            List<int> roleId = Session["UserRolesId"] as List<int>;
            if (roleId != null)
            {
                while (true)
                {
                    Response.Write(roleId);
                    Response.Write("<br />");
                    
                }
                
            }
        }
        
        */
            
          
    }
}



Default.aspx.cs页代码与上一个一样,为了测试身份而选择转入不同页。这转入页中会显示出用户的Id,用户名,用户密码,用户身份,以及用户所拥有的角色Id。

由于是多层架构,许多方法直接是调用底层代码所实现的,就不一一贴出了。

刚接触Session,什么也不会,都是在网上自己查的,测试读出session时,一不小心写了个死循环代码,结果导致自己电脑内存嗖的一下完全被占用,电脑直接卡死,以后要小心了。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值