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 == "")
{
Response.Cookies["un"].Value = s;
//被选中时设置[持久Cookie]时间
if (CheckBox1.Checked)
{
Response.Cookies["un"].Expires = DateTime.Now.AddDays();
} 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(-);
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(-);
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 == "")
{
Response.Cookies["un"].Value = s; //Response.Redirect("Default2.aspx");
Server.Transfer("Default2.aspx");
}
}
}

C#-WebForm-Session、Cookie-登录验证(未登录跳至登录界面)、隐藏地址栏传值的更多相关文章

  1. 由前端登录验证,页面跳转,携带headers token引发的思考和尝试

    目录 1 前言 2 我的实现方式与存在的问题 3 我想到的解决方案 3.1 前端跳转时携带headers{'token': token} 不就行了(经验证不可行) 3.2 前端跳转封装请求,携带hea ...

  2. Session失效后所有Ajax请求跳转登录地址

    当登录的Session失效后,采用ajax请求数据时会没有反应,这时候应该自动跳转到登录页面,让用户重新登录. 全局配置以下可实现 $(function() { $.ajaxSetup({ compl ...

  3. Codeigniter处理用户登录验证后URL跳转

    涉及到My_Controller.php以及登录验证模块User.php,代码如下: My_Controller.php class MY_Controller extends CI_Controll ...

  4. 使用ajax登录验证,第一次点击登录按钮无反应,第二次点击才能正常运行。

    问题描述: 使用ajax进行登录验证时,第一次点击登录按钮无反应,第二次点击才能进去. 解决方法: 原来的代码 <form action="" method="po ...

  5. mediawiki登录时第一次会跳回登录页面,第二次才能登录成功

    原因是:LocalSetting.php中的$wgServer属性使用的是ip,改为域名后成功解决问题 补充:改为域名后使用ip访问会出现第一次登录跳回登录界面的情况,应该根据实际情况来设置$wgSe ...

  6. session-cookie 和token登录验证

    最近研究了下基于token的身份验证,并将这种机制整合在个人项目中.现在很多网站的认证方式都从传统的seesion+cookie转向token校验.对比传统的校验方式,token确实有更好的扩展性与安 ...

  7. python装饰器 & flask 通过装饰器 实现 单点登录验证

    首先介绍装饰器,以下是一段标注了特殊输出的代码.用于帮助理解装饰器的调用过程. import time def Decorator_one(arg1): info = "\033[1;31; ...

  8. 基于Ajax与用户认证系统的登录验证

    一.登录页面 from django.contrib import admin from django.urls import path from blog import views urlpatte ...

  9. CAS单点登录系统入门--分布式登录验证

    1.开源单点登录系统CAS入门 1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要 ...

随机推荐

  1. asp.net MVC4——省市三级联动数据库

    数据库设计

  2. PHPUnit整合ThinkPHP的库TPUnit

    项目地址:https://github.com/web3d/TPUnit ThinkPHP PHPUnit框架集成,基于TP3.2,建议PHP 5.4以上环境. 单元测试应该是提高PHP编码质量的解决 ...

  3. C标准头文件<math.h>

    定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ...

  4. hadoop 2.7.2 + zookeeper 高可用集群部署

    一.环境说明 虚拟机:vmware 11 操作系统:Ubuntu 16.04 Hadoop版本:2.7.2 Zookeeper版本:3.4.9 二.节点部署说明 三.Hosts增加配置 sudo ge ...

  5. Win7系统卸载McAfee杀毒软件

    方法一.用系统正常卸载程序卸载. 首先,在服务里将McAfee相关的所有服务“禁用”. 然后, Windows“控制面板”中的“添加/删除程序”卸载 McAfee Consumer 产品. 接着,到C ...

  6. JqueryDataTable的使用(.Net平台)

    上一篇随笔提到了MvcPager,最近用到了一款前端JQ插件------DataTable(简称DT),很好用. DT是一款前端插件,和后端完全分离开,就这点来看,我就特别喜欢. 一.使用DT,需要以 ...

  7. ExtPB.Net:窗体应用技巧(2)在树形导航下打开弹出的win窗口

    ExtPB.Net的demo程序有个树形导航菜单,里面的菜单打开的窗口放在右边的TabStrip控件中.我们可以设计win通过导航打开,但有时我们希望以弹出窗口的形式打开它,但怎么办呢?现在可以这样修 ...

  8. Intellij idea 和android studio 代码给混淆

    Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...

  9. 记录我的点点滴滴从此刻做起——iOS开发工程师

    作为一个iOS工程师,想写博客也是有原因的:首先有这个想法(写博客的想法)也是因为想到自己都从事iOS开发快两年了,怎么也只会堆代码,写view,技术真的很一般,感觉都要被淘汰了:基于以上原因,自己也 ...

  10. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

    java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...