session保存登录

代码很简单:

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文件,设置如下:

<!-- 会话状态设置
          默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
          如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
         若要禁用 Cookie,请设置 sessionState cookieless="true"。
    -->
    <sessionState
            mode="StateServer"             //就是修改这里为“StateServer”
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false"
            timeout="30"
    />

2。打开“控制面板--管理工具--服务”,找到ASP.NET State Service这个服务,将其设为自动启动。

这样以后再刷新页面就不会丢失Session了.


简单写了个

前台:
<asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox>
        <br />
        <asp:Button ID="Button1" runat="server" Text="登陆" OnClick="Button1_Click" />
        <br />
        <asp:Label ID="Label1" runat="server" Text=""> </asp:Label> 


后台:

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;

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值