zoukankan      html  css  js  c++  java
  • C#-WebForm-Session、Cookie-登录验证(未登录跳至登录界面)、隐藏地址栏传值

    Post 传值(看不见的传值) Get 传值(看得见的传值)

    Session - 全局变量组

    存放位置:服务端

    作用:只要里面有内容,那么这个网站中所有的C#端都能访问到这个变量 —— object类型

    格式:

      web1 后台代码:

    复制代码
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
        }
        //按钮点击事件
        void Button1_Click(object sender, EventArgs e)
        {
            string s = TextBox1.Text;
            Session["un"] = s;
        }
    }
    复制代码

    Session 是个一个object类型的“组”,可以放任何东西,string、int、数组等等

    使用时先进行判断Session是否是Null,不为空时进行赋值(李献策lxc)

      web2 后台代码:

    复制代码
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["un"] != null)
            {
                Label1.Text = Session["un"].ToString();
            }
        }
    }
    复制代码

    优点:安全、方便、全局访问无限制

    劣势:消耗服务器内存资源(每一个用户是一条独立的通道,每一条通道有若干的Session,如果同时很多人访问,那么会造成服务器崩溃)

    生命周期:20分钟

      网页打开时会打开一个新的Session,此Session会存在20分钟,结束时自动清空,如果Session重新读取时将重新计时

      当关闭网页时,Session是不会取消的,仍然在倒计时;再重新打开网页时,会打开新的Session,旧的Session仍在后台计时

    注意:1、不要大量数据在Session里,尽量不要放集合

         2、临时Session取完无用后记得清空(李献策lxc)

    Cookie - “全局变量组”

    存放位置:客户端电脑硬盘上

    作用:保存数据信息,只能保存字符串,全局访问 —— string类型

    赋值:response  取值:request  判断时不用value

    格式:  

      web1 后台代码:

    复制代码
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
        }
        //按钮点击事件
        void Button1_Click(object sender, EventArgs e)
        {
            string s = TextBox1.Text;
            Response.Cookies["un"].Value = s;
        }
    }
    复制代码

    Cookies 是一个String类型的“组”,只能存放字符串类型,以文本文档字符串类型存放在客户端某个地方

    使用时先进行判断Cookies是否是Null,不为空时进行赋值(李献策lxc)

      web2 后台代码:

    复制代码
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies["un"]!=null)
            {
                Label1.Text = Request.Cookies["un"].Value;
            }
        }
    }
    复制代码

    优点:不消耗服务器资源、全局访问、只能保存字符串

    劣势:消耗电脑资源、不安全(Cookie会被抓取)、不可靠(用户随时可以删除)

      注意:不要用Cookie保存密码(登录成功后才会将用户名赋值给Cookie)

    分类:会话Cookie 与 持久Cookie

    生命周期:

      1、会话Cookie - 20分钟

      网页打开时会打开一个新的Cookie,此Cookie会存在20分钟,结束时自动清空,如果Cookie重新读取时将重新计时

      删除办法:

        (1)浏览器一关,此次访问已中断

        (2)没有任何新的提交,20分钟后过期

        (3)手动清除浏览器Cookie

      2、持久Cookie - 可以设置时间

      删除办法:(李献策lxc)

        (1)代码设置过期

        (2)手动清除浏览器Cookie

    持久Cookie如何制作?

      前台界面 - 当复选框被选中时,保持持久Cookie:

      后台代码:

    复制代码
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
        }
        //按钮点击事件
        void Button1_Click(object sender, EventArgs e)
        {
            string s = TextBox1.Text;
            if (s == "adimn" && TextBox2.Text == "1234")
            {
                Response.Cookies["un"].Value = s;
                //被选中时设置[持久Cookie]时间
                if (CheckBox1.Checked)
                {
                    Response.Cookies["un"].Expires = DateTime.Now.AddDays(3);
                }
    
                Response.Redirect("Default2.aspx");
            }
        }
    }
    复制代码

    如何删除持久cookie?

      后台代码:

    复制代码
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies["un"]!=null)
            {
                Label1.Text = Request.Cookies["un"].Value;
            }
    
            Button1.Click += Button1_Click;
        }
        //点击按钮清除Cookie并退回登录界面
        void Button1_Click(object sender, EventArgs e)
        {
            Response.Cookies["un"].Expires = DateTime.Now.AddDays(-10);
            Response.Redirect("Default.aspx");
        }
    }
    复制代码

    扩展一:

    没有登录是无法跳至主页面的 - 登录验证 - 不放入 IsPostBack 中

    复制代码
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies["un"] != null)
            {
                Label1.Text = Request.Cookies["un"].Value;
            }
            //登录验证:如果未登录跳至登录页面
            else
            {
                Response.Redirect("Default.aspx");
            }
    
            Button1.Click += Button1_Click;
        }
        //点击按钮清除Cookie并退回登录界面
        void Button1_Click(object sender, EventArgs e)
        {
            Response.Cookies["un"].Expires = DateTime.Now.AddDays(-10);
            Response.Redirect("Default.aspx");
        }
    }
    复制代码

    扩展二:

    跳转至主页面后,地址栏仍然显示的是登录界面的地址

    特点:用地址栏传值,但不会在地址栏中显示传值的内容(李献策lxc)

    复制代码
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
        }
        //按钮点击事件
        void Button1_Click(object sender, EventArgs e)
        {
            string s = TextBox1.Text;
            if (s == "adimn" && TextBox2.Text == "1234")
            {
                Response.Cookies["un"].Value = s;
                
                //Response.Redirect("Default2.aspx");
                Server.Transfer("Default2.aspx");
            }
        }
    }
  • 相关阅读:
    Windows环境下安装Hadoop+Hive的使用案例
    基于hadoop的离线分析大数据工具Hive的架构图
    springboot集成elasticsearch
    亿级流量场景下,大型架构设计实现【全文检索高级搜索---ElasticSearch篇】-- 中
    海量数据,大数据处理技术--分布式数据库【Hbase】
    亿级流量场景下,大型架构设计实现【全文检索高级搜索---ElasticSearch篇】-- 上
    zookeeper安装以及遇到的一些坑
    亿级流量场景下,大型架构设计实现【2】---storm篇
    用到UdpClient的一点经验
    随笔
  • 原文地址:https://www.cnblogs.com/baimangguo/p/6380531.html
Copyright © 2011-2022 走看看