• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

设定Cookie 变量的生命周期

发布: 2007-7-14 20:06 | 作者: 佚名    | 来源: 网络转载     | 查看: 20次 | 进入软件测试论坛讨论

领测软件测试网


    Cookie 变量虽然存放在Client 端机器上,却也不是永远不会消失的。系统预设给Cookie 变量的有效时间是1000 分钟,不过我们可以在程序中自行设定有效日期,只要指定Cookie 变量的Expires 属性即可。使用语法如下所示:

Response.Cookies(CookieName).Expires=#日期#

    若我们没有指定Expires 属性,则Cookie 变量将不会被储存,会像Session 一样浏览器关闭 结束浏览便被毁灭。不Cookie 一但设定有效期限后,除非我们将Expires 属性设为「dbNull」, 否则有日期期限的Cookie 无法被移除。所谓「dbNull」值代表「空」值,「空」的意思是什么 都没有;所以有设定有效日期的Cookie 就可以被移除。下列范例在使用者登入后,在一个月内 浏览页都不需要再登入;并且每次登入时,程序自动将Cookie 有效期限往登入日期后延长一个 月:

<Html>
<ASP:Panel Id="Pan1" Runat="Server">
<Form Runat="Server">
<Table>
<Tr>
<Td>账号:</Td>
<Td><Asp:TextBox Id="txtID" Runat="Server" /></Td>
</Tr>
<Tr>
<Td>密码:</Td>
<Td><Asp:TextBox TextMode="Password" Id="txtPassword"
Runat="Server" /></Td>
</Tr>
</Table>
<ASP:Button Id="btnSubmit" Text="确定" OnClick="btnSubmit_Click"
Runat="Server"/>
<ASP:Button Id="btnReset" Text="清除" OnClick="btnReset_Click"
Runat="Server"/>
<ASP:Label Id="Label1" Text="请输入账号及密码" Runat="Server"/>
</Form>
</ASP:Panel>
<ASP:Panel Id="Pan2" Runat="Server">
Hi! <ASP:Label Id="lblMsg" Runat="Server"/> ,欢迎光临
</ASP:Panel>
<Script Language="VB" Runat="Server">
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
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
Sub btnReset_Click(Sender As Object, e As EventArgs)
txtID.Text=""
txtPassword.Text=""
End Sub
</Script>
</Html>

    上述程序代码范例中我们使用两个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 的应用。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网