让静态页面显示用户登录状态

经常需要显示用户的登录状态,这样对用户来说才更加友好。

那么既然是静态页面了,那这个用户状态怎么显示呢?

两种方法:一个是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>
原文地址:https://www.cnblogs.com/sand-tiny/p/3844550.html