注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

obsolete

wanna go

 
 
 

日志

 
 

让静态页面/缓存页面也能显示用户登录状态  

2012-04-16 10:54:43|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

现在流行静态页面,或者页面缓存。

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

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

两种方法:一个是iframe嵌入一个动态页面显示用户登录状态,但是这个要多一次页面请求,还涉及到链接的目标问题,不是很好。

另外一种就是AJAX。也分是否从服务器端读取,如果从服务器端读取,还是需要往返一次页面请求,性能相对较低。下面介绍直接把用户登录状态保存到客户端。这样效率最高。

正常的用户登录过程就不多介绍了,这个大家可以搜索一下。我主要介绍如何保持登录状态到客户端。

在用户登录的地方加一句:

protected void Login1_LoggedIn(object sender, EventArgs e)
{
Response.Cookies[
"user"].Value = Login1.UserName;
}

这句就是把用户名保存到cookie里了。

然后前台要显示用户登录状态:

function getCookie(name){var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr != null) return unescape(arr[2]); return null;}
if (getCookie('user')!=null)
document.write(
'用户名:' + getCookie('user')+'<a href="/logout.aspx">注销</a>');
else
document.write(
'<a href="/login.aspx">登录</a> <a href="/reg.aspx">注册</a>');

全是客户端运行的JS代码。

退出时清楚该状态:

protected void Page_Load(object sender, EventArgs e)
{
System.Web.Security.FormsAuthentication.SignOut();
Response.Cookies[
"user"].Expires = new DateTime(1970, 1, 1);
Response.Redirect(
"~/");
}

登录退出涉及到服务器操作,显示的时候完全是客户端脚本来处理。效率最好。而且该cookie过期时间跟服务器端用户登录状态过期时间是一致的。(特殊登录特殊处理)

  评论这张
 
阅读(944)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018