asp.net应用程序实现类似QQ的登录

liqiyou 2019-03-17 03:34:10
大家好,我这有个需求,就是登录时要判断该用户是否已登录,如果是:则强制已登录的用户下线,并提示您已经在其他电脑上登录了,不能重复登录。求代码。
...全文
437 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jx315425246 2019-03-22
  • 打赏
  • 举报
回复
这是在线机制问题
用户以唯一ID登录(要有登录,退出,在线机制),如果在其他设备,或在同一设备,用户二次登录用在线机制控制

在线机制:
在线认证:登录ID,设备信息(要终端的设备权限),设备状况,连接方式;
心跳包,合成码报备;
在线错误:超时,多设备,同ID多次认证;
容错:同设备(多设备)超时,设备数目,认证次数

控制主线:心跳包
guizhoumen 2019-03-21
  • 打赏
  • 举报
回复
引用 1 楼 以专业开发人员为伍 的回复:
你可以在服务器端(最初可以在数据库中)保存某个用户所登录(在线)的 asp.net SessionID 编号以及最后一次刷新时间,注销或者超时(例如超过2分钟)未刷新的时候忽略此编号。那么就能随时判断一个用户是否已经在另外一个 Session 在线。


不要用session,用户多了太浪费资源了,最好方式数据库保存uid(用户名id),每次登陆都写一条记录和过期时间,记录中有一个token(guid类似),同步生成一个token对应的对称加密cookie,后面有相同uid登陆就判断一下是否有同名记录存在。

配合一个自动任务,自动删除已经过期的记录。
  • 打赏
  • 举报
回复
引用 1 楼 以专业开发人员为伍 的回复:
你可以在服务器端(最初可以在数据库中)保存某个用户所登录(在线)的 asp.net SessionID 编号以及最后一次刷新时间,注销或者超时(例如超过2分钟)未刷新的时候忽略此编号。那么就能随时判断一个用户是否已经在另外一个 Session 在线。
他这个是 第二个登陆 踢掉 第一个人, 为什么还要加个时间判断那, 直接判断token不对 就踢到登陆界面就好了, 跟时间没关系吧。
  • 打赏
  • 举报
回复
通过SessionID 和 自己生成的token 都可以做到 但是这样 方式有一个缺点, a登陆后 B登陆 A在不操作的情况下 永远不知道他的号在别的地方登陆了 还有一个办法 websocket B登陆马上推送给A, A马上就知道 他的号在别处登陆
  • 打赏
  • 举报
回复
你可以在服务器端(最初可以在数据库中)保存某个用户所登录(在线)的 asp.net SessionID 编号以及最后一次刷新时间,注销或者超时(例如超过2分钟)未刷新的时候忽略此编号。那么就能随时判断一个用户是否已经在另外一个 Session 在线。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧