zoukankan      html  css  js  c++  java
  • asp.net session的使用与过期实例代码

    Session的使用

    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            function getSessionClick(action) {   //这个函数是为了知道哪一个提交按钮被点击
                $("#hidlgc").val("");  //清空隐藏值
                $("#hidlgc").val(action);   //给隐藏控件赋值
            }
        </script>
    </head>
    <body>
        <form id="form1" method="post" action="MySession.aspx">
             <table>
                <tr>
                    <td>账号:</td><td><input type="text" name="txtUid" /></td>`
                </tr>
                 <tr>
                    <td>密码:</td><td><input type="password" name="txtPwd" /></td>
                 </tr>
                 <tr>                
                    <td colspan="2">
                        <input type="hidden" value="" id="hidlgc" name="hidlgclick" />  
                        <input onclick="getSessionClick('lgclick')" type="submit" value="登录" />
                        <input type="submit" onclick="getSessionClick('getSession')" value="获取session" />
                        <input type="submit" onclick="getSessionClick('backLg')" value="退出登录" />
                    </td>
                 </tr>
             </table>
        </form>
    </body>

    .net代码

    protected void Page_Load(object sender, EventArgs e)
            {
                //把用户id写入session中
                if (Request.Form["hidlgclick"] == "lgclick")
                {
                    if(Request.Form["txtUid"].ToString()=="admin"&&Request.Form["txtUid"].ToString()=="admin") //判断用户登录
                    {
                        Session["userName"] = Request.Form["txtUid"].ToString();  //把用户id保存到session中
                        Response.Write(Session["userName"].ToString()+"---点击登录"); //获取session,并写入页面
                    }
                }
                //获取Session
                if (Request.Form["hidlgclick"] == "getSession")
                {
                    if (Session["userName"] != null)
                    {
                        Response.Write(Session["userName"].ToString() + "---点击获取session"); //获取session,并写入页面
                    }
                }
                //取消当前会话,相当于注销(退出登录)。
                if (Request.Form["hidlgclick"] == "backLg")
                {
                    Session.Abandon();
                }
            }

    那么我们要怎么判断session是否过期了呢

    方法二:可以在HttpModule中判断,在HttpModule中注册请求管道的AcquireRequestState

    事件(可以拿到session的那个事件)

    步奏:

    1:新建一个继承IHttpModule接口的类Module

    2:让Module类实现接口成员。

    3:在Init()方法中对Context进行注册AcquireRequestState事件(在这个事件中可以拿到Session)

    4:在方法中写

    void context_AcquireRequestState(object sender, EventArgs e)

        {

            HttpApplication app = (HttpApplication)sender;

            if (app.Context.Session["userId"] == null)

            {

                app.Response.Write("<script>alert('没有登录');</script>");

            }

    }

    5:在web.config配置文件中<system.web>节点下添加一个节点

    <httpModules>

          <add name="demo" type="Module"/> <!--type后面是命名空间.类名-->

        </httpModules>

    使用这种方法会在每个页面加载的时候都先检查module。

    原理是实现IHttpModule接口的类是在执行页面之前执行的。 在page_load()事件执行之前就判 断Session如果不存在就提示。

    这种方法效率能高一些,因为如果不存在 session直接就可以处理。后面的一系列事件都可以不 用执行。


    方法三:在page类上做点手脚

    Page类中有OnInit()这个虚方法。

    步奏:

    1:创建一个集成Page类的类TestSession

    2:在TestSession中重写OnInit()这个方法。

    3:在OnInit()方法中判断Session

    4:在需要判断session的页面集成TestSession这个类,而不是继承Page类

    这种方法比较灵活,在需要判断session的页面中继承TestSession就可以,不需要判断session 的页面直接继承Page就行了

  • 相关阅读:
    一个优秀的博主 有助于前端进阶
    JS异步的理解以及promise
    node-sass出错
    vuecli脚手架搭建
    GitHub上传项目方法
    ES6转ES5
    webpack---安装与卸载
    CSS之BFC详解
    Vue.js学习 --环境搭建
    python is和==的区别
  • 原文地址:https://www.cnblogs.com/sjqq/p/6366021.html
Copyright © 2011-2022 走看看