让静态页面显示用户登录状态
那么既然是静态页面了,那这个用户状态怎么显示呢?
两种方法:一个是iframe嵌入一个动态页面显示用户登录状态,但是这个要多一次页面请求,还涉及到链接的目标问题,不是很好。
另外一种就是AJAX。也分是否从服务器端读取,如果从服务器端读取,还是需要往返一次页面请求,性能相对较低。下面介绍直接把用户登录状态保存到客户端。这样效率最高。
正常的用户登录过程就不多介绍了,这个大家可以搜索一下。我主要介绍如何保持登录状态到客户端。
首先在登录页面写如下代码:
//存入cookie HttpCookie newCookie = new HttpCookie("User"); newCookie.Expires.AddMinutes(30);//设置时间 newCookie.Values.Add("uid","001"); newCookie.Values.Add("username","leo li"); Response.AppendCookie(newCookie);
这里是把用户名等信息客户端存cookie
在html页中的代码如下:
<html> <title>测试</title> <mce:script type="text/javascript" language="javascript"><!-- function GetCookie(sMainName, sSubName) { var sCookieName = sMainName + "="; var sSubCookieName = (sSubName) ? sSubName + "=" : null; var sCookie; var sWholeCookie = document.cookie; var nValueBegin = sWholeCookie.indexOf(sCookieName); if (nValueBegin != -1) { var nValueEnd = sWholeCookie.indexOf(";", nValueBegin); if (nValueEnd == -1) nValueEnd = sWholeCookie.length; var sValue = sWholeCookie.substring(nValueBegin + sCookieName.length, nValueEnd); //获得Cookie值 if (sSubCookieName)//多值Cookie { var nSubValueBegin = sValue.indexOf(sSubCookieName); if (nSubValueBegin != -1) { var nSubValueEnd = sValue.indexOf("&", nSubValueBegin); if (nSubValueEnd == -1) nSubValueEnd = sValue.length; var sSubValue = sValue.substring(nSubValueBegin + sSubCookieName.length, nSubValueEnd); //获得指定的子键值 return unescape(sSubValue); } } if (!sSubCookieName) return unescape(sValue); } return null; } function a() { if (GetCookie('User', 'name') != null) { document.write('用户名:' + GetCookie('User', 'name') + '<a href="/logout.aspx" mce_href="logout.aspx">注销</a>'); } else { document.write('<a href="/login.aspx" mce_href="login.aspx">登录</a> <a href="/reg.aspx" mce_href="reg.aspx">注册</a>'); } } // --></mce:script> <head> </head> <body onload="a()"> </body> </html>