·Session("Session1")="****" //赋值
Session("Session2")="****" //赋值
Session.Timeout=1 //设定Session 对象变量的有效期限1分钟(默认20分钟)
====转贴第0篇==开始====================================================================
Cookies、Session 和Application 对象很类似,也是一种集合对象,都是用来在保存数据。但Cookies 和其它对象最大的不同是Cookies 将数据存放于客户端的磁盘上,而Application 以及Session 对象是`将数据存放于Server 端。Application、Section 以及Cookies 对象的差异如下表所示:
Cookies 对象不隶属于Page 对象,所以用法和Application 及Session 对象不同。Cookies 对象分别属于Request 对象和Response 对象,每一个Cookie 变量都是被Cookies 对象所管理,它的正确对象类别名称是HttpCookie Collection。要储存一个Cookie 变量,要透过Response 对象的Cookies 集合;其使用语法如下:
Response.Cookies(Name As String).Value="资料"
而要取回Cookie,则是用Request 对象的Cookies 集合,并将指定的Cookie 传回;其使用语法如下所示:
变数=Request.Cookies(Name As String).Value
Cookies 对象常用的属性如下表所示:
下列范例新增两个Cookie 变数,并利用For...Next 循环分别利用Cookies 集合的Item 属性以及Get 方法将Cookie 变量传回:
除了我们所加入的Cookie 变量之外,另外多了一个名为AspSessionId 的Cookie 变量。这个Cookie 变量最主要是被ASP.NET 用来识别每个连结,由ASP.NET 在每个客户端建立连结时自动产生;每一次的连结其AspSessionId 的内容都不同。
===============
Cookie 变量虽然存放在Client 端机器上,却也不是永远不会消失的。系统预设给Cookie 变量的有效时间是1000 分钟,不过我们可以在程序中自行设定有效日期,只要指定Cookie 变量的Expires 属性即可。使用语法如下所示:
Response.Cookies(CookieName).Expires=#日期#
若我们没有指定Expires 属性,则Cookie 变量将不会被储存,会像Session 一样浏览器关闭 结束浏览便被毁灭。不Cookie 一但设定有效期限后,除非我们将Expires 属性设为「dbNull」, 否则有日期期限的Cookie 无法被移除。所谓「dbNull」值代表「空」值,「空」的意思是什么 都没有;所以有设定有效日期的Cookie 就可以被移除。下列范例在使用者登入后,在一个月内 浏览页都不需要再登入;并且每次登入时,程序自动将Cookie 有效期限往登入日期后延长一个 月:
Hi!
上述程序代码范例中我们使用两个Panel,分别为Pan1 以及Pan2;Pan1 为要求使用者输入账号及密码,而Pan2 则为欢迎语。程序执行时若使用者的Cookie 不存在或没有数据,将欢迎语隐藏;如下列程序代码片段所示:
Sub Page_Load(Sender As Object,e As EventArgs)
If Request.Cookies.Item("MyWeb_UserID")=dbNull Or _
Request.Cookies.Item("MyWeb_UserID").Value="" Then
Pan2.Visible=False
Else
Response.Cookies.Item("MyWeb_UserID").Expires=Now.AddMonths(1)
lblMsg.Text=Request.Cookies.Item("MyWeb_UserID").Value
Pan1.Visible=False
End If
End Sub
上列程序代码片段中我们先判断Cookie 对象是否存在,以及确定Cookie 中是有内容;如果Cookie 不存在或是Cookie 内没有资料,则显示Pan1 要求使用者登入的画面;倘若Cookie 存在,则显示Pan2 出现欢迎语:
使用者若输入正确的使用者名称后,我们便将使用者账号写入Cookie 中,并指定有效期限为一个月内;如下程序代码片段所示:
Sub btnSubmit_Click(Sender As Object, e As EventArgs)
If txtID.Text="charles" and txtPassword.Text="1234" Then
Response.Cookies("MyWeb_UserID").Value=txtID.Text
Response.Cookies.Item("MyWeb_UserID").Expires=Now.AddMonths(1)
Pan1.Visible="False"
Pan2.Visible="True"
lblMsg.Text=txtID.Text
End If
End Sub
下次使用者再浏览网页的时候,只要在一个月内有登入过,就不需要再输入使用者账号及密码,而直接出现下列画面:
Cookie 验证的安全考量
在使用Cookie 验证使用者时,必须要考虑到身分验证的问题。因为使用者可能在非私人的计算机上浏览,或是个人计算机的安全防护不完善;导致其它人可能使用同一个浏览器上站,这样一来任何人都可以顺利的通过Cookie 的验证。对于有机密考量的数据或是有价交易的处理,势必造成漏洞;设计这方面的网站时,要小心仔细考量Cookie 的应用。
===============转自http://www.tech163.net/n/jc/48511.html
Session 对象的功能和Application 对象一样,都是用来储存跨网页程序的变量或是对象,但Session 对象和Application 对象变量有些特性不太一样。Session 对象变量只针对单一网页使用者,也就是说各个联机的机器有各自的Session 对象变量,不同的联机无法互相取。Application对象变量中止于停止IIS 服务,但是Session 对象变量终止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session 变量对象的有效时间时,Session 对象变量就会消失。Session 对象正确的对象类别名称是HttpSessionState,Application 对象一样是属于Page对象的成员;所以可以直接使用。Session 对象的使用方式和Application 对象变量相当类似,其使用语法如下:
Session("变量名")="内容"
Session 也可以存放COM 组件,其使用语法如下:
Session("名称")=Server.CreateObject(ProgId)
下表为Session 对象常用的属性:
下表为Session 对象常用方法:
Session 对象变量最常应用在存放使用者的状态。例如在使用者登入的页面上,我们可以将代表使用者登入网页的成功与否状态储存到一个变量中,然后在其它网页加入判断使用者是否登入成功与否的程序代码。如果登入成功才可以浏览某些网页,如果登入失败则限制或拒绝使用者的浏览。下列范例使用者必须成功通过登入网页EX16.aspx 的验证,才可以浏览EX17.aspx 网页。其验证的程序从会员数据表中判断使用者所填入的名称及密码是否正确,如下所示:
Sub btnSubmit_Click(Sender As Object,e As Eventargs)
Dim strConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:/InetPub/wwwroot/CR/CH08/MyWeb.mdb"
Dim strComStr As String = "Select * From Members Where UserId = '" &
txtID.Text & "' And UserPwd = '" & txtPassword.Text & "'"
Dim dscA As ADODataSetCommand = New
ADODataSetCommand(strComStr,strConStr)
Dim dsDataSet As DataSet = New DataSet()
dscA.FillDataSet(dsDataSet, "Members")
If dsDataSet.Tables("Members").Rows.Count=1 Then
Session("Id")=txtID.Text
Session("IsPassed")="True"
Page.Navigate("EX17.aspx") '将连结导向至EX17.aspx
Else
Label1.Text="验证失败! 请重新输入"
End If
End Sub
Sub btnReset_Click(Sender As Object,e As Eventargs)
txtID.Text=""
txtPassword.Text=""
End Sub