登录的一些问题

普通的用户login,logout是经常会用到的,但如果要求单人登入呢?当某用户已经登录时就不能够现 再次登录,这种情况加以逻辑判断就可以完成.但有时用户会不按注销按钮,而直接关闭浏览器,此时就要等到session结束时才能够再次登录了,当session设成较大值时,这种情况就需要比较长时间的等待.此时,可以用JavaScript响应浏览器的关闭事件,强制结束session.代码如下(以下代码仅在IE中有效):
 function closeFun()
    
{
        
if(event.clientY<0||event.altKey==true)
        
{
            
var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            xmlHttp.open(
"get","OnClose.aspx",false);
            xmlHttp.send(
null);
        }

    }

    window.onbeforeunload
=closeFun;

 现在问题又来了,当出现某些突发情况,如断电,电源不小心弄开等,这时用户既没有点注销也没关闭浏览器,当用户想要再登录时还是需要等到session结束,为了减少这种情况的等待时间,可以适当减小session的timeout,而当session的timeout过小时,可以当用户登录后,期间去上了次WC或接了个电话后,session就过期了,又要重新登录,有点麻烦.这种情况又可以用这种方式来处理,在客户端用AJAX异步轮询的请求SERVER的某个空页面,达到定期激活session的目的,代码如下(以下代码仅在IE中有效):
function myRefresh()
    
{
        
var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        xmlHttp.open(
"get","OnSession.aspx",false);
        xmlHttp.send(
null);     
        window.setTimeout(
"myRefresh()",30000);  
    }
 
    myRefresh();
在OnSession.aspx页中:
public partial class OnSession : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
this.Response.Expires = -1;
    }

}
另一种方法是,在页面中隐藏一个iframe,同样是做轮询的刷新页面:
<iframe id="iframe1" width="0" height="0"></iframe>
<script type="text/javascript">
window.setInterval(
'document.getElementById("iframe1").src="OnSession.aspx";',30000);
</script>
这种方法每次刷新页面也会刷新浏览器的进度条。
这里只列出了实现方式,具体性能相关需要具体情况具体分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值