一个账号不能同时登录 c#Web程序,如何实现一个账号不能多人同时登录;使用状态控制,在关闭IE时恢复状态,经常捕捉不到;如果一段时间自动恢复,有的时候用户操作时间很短,不太现实;请问各位有什么方法实现; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 asp.net 单用户登录经典解决方案http://hi.baidu.com/isbx/blog/item/34ff908f1446c9f3503d92d5.html http://topic.csdn.net/u/20091226/10/bdd24dbf-b9f9-4fa9-83dd-619b549dc736.html?91932 就是说在推出,关闭IE的时候,捕捉IE关闭的时间经常捕捉不到, 加一个专门的用户登录状态表~flag字段 0在线 1离线 用户登录的时候先判断flag的值 是否为1~~ 就是因为这个不好使啊,在onunload事件时修改回状态,但是这个往往捕捉不到 如果我登录了,然后关闭IE,服务器端不可能即时得知用户离线了,恐怖flag还是为0,短期内再重新登录只能被拒绝了. 楼主是不是用session来验证用户的存储登录状态啊。我的想法是这样的,每次登录的时候要记录下用户的网关,然后核对是不是有这个用户的Session如果有的话就再比对一下网关,不相同的话就把这个Session删掉然后重新生成Session。 只有用超时判断...http协议下只有超时是唯一可靠的,配合比较最后一次登录IP就可以达到目的... 如果有用户的详细的操作日志,记录用户最后一次操作的时间和IP,和新的登录会话的时间和IP作比较,如果不同IP在很近的时间内连接登录,被认为是同一登录.其实, 一般B/S系统没人去管这个. 据我所知, 没有哪个有影响的网站限制了这个东东. 我的想法是在数据库用户表中增加一个字段, 每次登录后都生成一个GUID存到该字段中与Cookie中, 操作时对比, 相同则不允许, 不同则提示未登录. 判断的session 跟Cookie的时间弄成一样的。绑定在一起。session没。COOKIE也没。关闭浏览器 Cookie还存在、就这样了。。实现 是因为这个登录修改状态了,但是在关闭的时候不能正常捕捉到onunload事件,造成状态改不回去;专门设了个作业,5分钟清理一会,再就是给系统管理员权限可以刷新;但是很多客户的IE不能捕捉到onunload事件,造成不能马上重新登录呢,很是费劲;有人说这是IE的bug;再就是如果有客户装了什么插件,弹出框后台的那个页面都不弹出; js好像可以捕捉到ie的关闭事件,但如果客户强制关机了。你也没办法吧。还是用超时判断吧。 1.可以多开几个账户呀2.如果用SESSION保存的,当用户登录的时候判断SESSION是否存在,存在的话就不让登录3.其他的只有在数据库,添加一个表了 你登入第一个系统后,这时Session就有东西,通过中间一个页面,这个中间页面属于第二个系统(前提是只有通过登入后才能跳到这个中间页面),然后这个中间页面来Seesion复制,直接给第二个系统! 可以在表里面多建一个字段quota。默认值为1成功登录一次-1,log out的时候+1。登录的时候判定是否为1即可。 用时间判断吧..只要登录的用户每隔一段时间就去刷新一下这个时间..然后服务器做个Timer每隔一段时间去判断这个时间是否超出一定范围,如果超出..flag就为0勉强能够实现了.. 网上看到一文章说用 SessionStateStoreData可以去研究一下 在数据库设置的时候 家一个状态的字段 登陆的时候查询 用户名 ,密码 ,和状态 如果string state=当前的用户登陆状态if(state==1){ 进入}else{提示当前的账号登陆……省略} page_Load(){ Update(你需要修改标识状态的那个字段);}page_Init(){ Update(你需要修改标识状态的那个字段);}这样很难吗? 我是在登录时,生成一个GUID,将GUID和用户名放在cache里,登录时判断cache里是否有这个用户。如果有同名用户登录,将另一登录者从cache里清除。但是如何即时通知被清除的用户已经离线了还没弄出来。学习 可以不用马上清除cache,标识一下,等用户再次操作时,检查标识如果已改变就通知用户已被清除。没实践过不知道可不可行。 引用二楼,讲的不错.第一:建立global.asax文件, Session_End 事件中写入如下代码: Hashtable h = (Hashtable)Application["online"]; if (h[Session.SessionID] != null) h.Remove(Session.SessionID); Application["online"] = h;第二:修改web.config文件,在system.web 结点里面增加<sessionState mode="InProc"></sessionState>这个是为了使用global.asax中的session_end事件生效。第三:页面的登录事件中,判断登录用户是否在服务端全局变量中存在,存在就不允许登录,不存在就创建。以下是实现过程,登录按纽的事件中调用。 目前就是这么处理的,问题出在用户在关闭IE的时候有个处理动作,弹出页面去修改状态,有的IE关闭的时候捕捉不到;如果用session会造成不能马上重新登录; 网页背景音乐怎么提醒? 【急救40分只有这么多了】JS菜单问题。希望高手调式下。 DropDownList内容过长的问题 tab.Visible = true; 100f INSERT INTO 语句的语法错误 Button单击为什么没有反应? 一句SQL语句,想不出来 我用asp.net+C#开发的程序,在长时间的测试过程中,我发现DataGrid表单经常要记忆上次的内容,不知怎么办? ASP.NET (C#) 怎么实现 每过一段时间触发一个方法 ASP.net下有没有类似C#下tabcontrol控件的控件??急 上传文件至远程路径 mvc的技术问题,看不懂错误提示
http://hi.baidu.com/isbx/blog/item/34ff908f1446c9f3503d92d5.html
flag字段 0在线 1离线
用户登录的时候先判断flag的值 是否为1
~~
专门设了个作业,5分钟清理一会,再就是给系统管理员权限可以刷新;
但是很多客户的IE不能捕捉到onunload事件,造成不能马上重新登录呢,很是费劲;有人说这是IE的bug;
再就是如果有客户装了什么插件,弹出框后台的那个页面都不弹出;
还是用超时判断吧。
2.如果用SESSION保存的,当用户登录的时候判断SESSION是否存在,存在的话就不让登录
3.其他的只有在数据库,添加一个表了
成功登录一次-1,log out的时候+1。登录的时候判定是否为1即可。
只要登录的用户每隔一段时间就去刷新一下这个时间..然后服务器做个Timer
每隔一段时间去判断这个时间是否超出一定范围,如果超出..flag就为0勉强能够实现了..
登陆的时候查询 用户名 ,密码 ,和状态
如果
string state=当前的用户登陆状态
if(state==1)
{
进入
}
else
{
提示当前的账号登陆……省略
}
{
Update(你需要修改标识状态的那个字段);
}
page_Init()
{
Update(你需要修改标识状态的那个字段);}这样很难吗?
没实践过不知道可不可行。
第一:建立global.asax文件, Session_End 事件中写入如下代码: Hashtable h = (Hashtable)Application["online"];
if (h[Session.SessionID] != null)
h.Remove(Session.SessionID);
Application["online"] = h;第二:修改web.config文件,在system.web 结点里面增加<sessionState mode="InProc"></sessionState>这个是为了使用global.asax中的session_end事件生效。第三:页面的登录事件中,判断登录用户是否在服务端全局变量中存在,存在就不允许登录,不存在就创建。以下是实现过程,登录按纽的事件中调用。
如果用session会造成不能马上重新登录;