动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   .Net → 阅读文章

 设定Cookie 变量的生命周期

作者来源: 
阅读 数 430 人次 , 2006-3-29 4:31:00 


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 的应用。
 本文Tagscookies  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Session 和Cookie 的关系
· 下一篇:自订CookieCollection 及Cookie 物件
· asp.net StreamReader 创建文件
· 使用响应文件编译C#源文件
· 关于VS.NET beta1安装问题
· 开始 .Net的旅程(二)
· 用c#写的smtp邮件发送类


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077