单账号登陆解决方案 用户表中有一个状态字段,判断用户是否登陆用户登陆时修改状态当用户退出的时候修改状态用户登陆时当状态为已登陆则不进行登陆操作求用户退出的时候修改状态的解决方案分不够再开帖先谢过! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果正常点击按钮统退出或执行session_end就可修改数据库中字段否则就可记录用户最后操作时间,如果超过规定时间,用户下线,通过定时执行修改用户状态 Session End的时候修改并且页面关闭的时候也用Ajax提交退出请求 按楼主描述的不是单点登录(SSO),只是同一用户名只能登录一次。 你的程序里面肯定有自动刷新页面吧? 用Apllication或者数据库或者文件都可以, 比如用application 规定每隔n秒,每个用户都要清空并刷新一下Apllication变量,里面存放所有在线用户id,同时比较刷新前后的差异。 比如:Apllication("id")="1-3-5-23-56-23-90"表明这几个用户在线。 如果有一个人id=3吊线了,那么在几个n秒之内这个变量里面他就没提交自己的ID,就会 Apllication("id")="1-5-23-56-23-90" 那么任何一个用户都可以把他从数据库里面自动还原,比如K个n时间内都没出现id=3,就认为他掉了。 如果有人开始还原他了,那么别人就不再还原他。这个好判断。 我这种做法,会增加服务器负担,而且用户也要不停的刷新。适合对实时要求高,用户少的程序。误差是<K*n,K就是你设定的次数。 中间还有很多关键技巧: 还要用几个辅助全局变量,锁定和开锁apllication。 还要存放上k-1次的Apllication("id") 还要靠global.sa文件,最后托一下底,防止万一在线没人的情况。 数据库表中多出一个字段 用户每次登陆更新该字段 并把该字段存在 session 或 cookie中获取用户信息的时候匹配该字段这样用户就只能单登陆了异地登陆的话,后面登陆的会把前面登陆的 挤掉 我做过这个,在我以前的一个帖子里面,你可以通过一个时间字段来判断,因为如果你要是用session_end的话,不能准确的执行,比如是IE死掉了,或者重启了,等等,所以只要利用ajax不停的更新这个时间字段,然后再不停的读取这个字段,如果发现这个字段有一段时间没变(超过你自己设定的时间),就认为应该重新登录,这个是比较理想的实现方式 一定要极端保证可靠性的话用Ajax保持心跳包发送的可行性比较高 前天发的问题还没解决,望今天能处理,感谢各位帮我看看~~ 求MVC2.0安装教程 .net灵活性是要差一些,这个效果怎么做? 一个很小的DATALIST问题 求一正则表达式 问一个简单的问题,或请大家提供个思路.................................. 求判断全角半角的函数 这不是我的错! 各位高手帮帮忙啊!!!急急急啊!! 学.net以来一直没有解决的问题,望高手能指点迷津! 一个小问题 DropDownList如何同时显示2个字段的内容
否则就可记录用户最后操作时间,如果超过规定时间,用户下线,通过定时执行修改用户状态
并且页面关闭的时候也用Ajax提交退出请求
用Apllication或者数据库或者文件都可以,
比如用application
规定每隔n秒,每个用户都要清空并刷新一下Apllication变量,里面存放所有在线用户id,同时比较刷新前后的差异。
比如:Apllication("id")="1-3-5-23-56-23-90"表明这几个用户在线。
如果有一个人id=3吊线了,那么在几个n秒之内这个变量里面他就没提交自己的ID,就会
Apllication("id")="1-5-23-56-23-90"
那么任何一个用户都可以把他从数据库里面自动还原,比如K个n时间内都没出现id=3,就认为他掉了。
如果有人开始还原他了,那么别人就不再还原他。这个好判断。
我这种做法,会增加服务器负担,而且用户也要不停的刷新。适合对实时要求高,用户少的程序。误差是<K*n,K就是你设定的次数。
中间还有很多关键技巧:
还要用几个辅助全局变量,锁定和开锁apllication。
还要存放上k-1次的Apllication("id")
还要靠global.sa文件,最后托一下底,防止万一在线没人的情况。
用Ajax保持心跳包发送的可行性比较高