一个账号只能在一个地方登陆

完美-态度 2015-12-30 09:20:21
现在需要做这样一个控制,一个登陆帐号只能在一个地方登陆,如果其他地方登陆,会把前一次的登陆人挤下去,有没有好的方法或者例子,本人用的MVC3 +C#,希望有好的方法的大师们,指点迷津。
...全文
509 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
完美-态度 2017-07-29
  • 打赏
  • 举报
回复
目前我是通过Sessionid来解决,这个方法的坏处是同一台电脑,不同浏览器访问,也会提下线 。
跳动de指尖 2016-01-04
  • 打赏
  • 举报
回复
引用 2 楼 lys1978900 的回复:
单点登录,简单,所有登录后的页面,要继承一个基类页面,用缓存或者application记录登录时间和IP地址 基类页面判断当前IP是否和缓存IP一致,不一致就退出登录 登录的时候 把IP地址加入到缓存或者application
这样做是不合理的,如果我在局域网中登录,可是针对于万维网的ip还是同一个, 而且如果我同一台电脑当中的不同浏览器登录那么是不是也该踢下线呢? 所以在web程序方面判断是否在一个地方,那么就只有使用心跳包了 顺便说一句,楼主,这种想法很愚蠢 ,因为对于web程序来说,多处登录本身是没有任何问题的。
秋的红果实 2016-01-02
  • 打赏
  • 举报
回复
如何区分不同地方呢,还需要ip库 用application级变量保存认证信息,账号新登陆后,销毁以前登陆的认证信息,这样以前那个登陆就不能操作了,当前登录可以操作;至于如何通知客户端,如果是asp.net,可以在客户端以轮询方式请求服务器了,如定时局部刷新页面
  • 打赏
  • 举报
回复
另外,只有登录时需要查看数据库,不登录时不需要。 当然,当用户“离线”时需要能够知道,而asp.net是经常重启的,不可能在客户端和服务器之间维持连接,因此其实需要“心跳”机制来判断用户是否离线。如果已经离线,就需要清理一下记录。
  • 打赏
  • 举报
回复
引用 10 楼 fei2yun 的回复:
如果每次都需要去查看数据库合法性的话,可以使用一个特征值,比如说随机密码,这个密码每次登录都会变,如果和当前用户的不一样,就说明被二次登录
在 asp.net 中这叫做 SessionID,它是 asp.net 本来就自动产生在cookie中的。
  • 打赏
  • 举报
回复
引用 5 楼 azhe5201314 的回复:
@3# 我不需要实现单点登陆,只需要一个帐号只能一个地方登陆就OK了。单点登陆要加的东西太多了,没有必要。
嗯是的。查一下数据库吧。
  • 打赏
  • 举报
回复
引用 6 楼 q375938192 的回复:
你设计数据库的时候,建立一个列,叫登录状态,A登录了,B登录的时候就查询状态,如果是登录状态就不给B登录 如果你想做成B登录,A就失效这种,你可以放给状态列放一个登录用户,A登录就是用户A,B登录了就是用户B,A再进行操作的时候发现用户已经不是A了就自动out
lz 的意思,是同一个用户id,只能有一个SessionID 是活跃的。
完美-态度 2015-12-30
  • 打赏
  • 举报
回复
@3# 我不需要实现单点登陆,只需要一个帐号只能一个地方登陆就OK了。单点登陆要加的东西太多了,没有必要。
q107770540 2015-12-30
  • 打赏
  • 举报
回复
一般简单点做法是直接根据sessionId来判断不同的客户端 实现单点登陆
q107770540 2015-12-30
  • 打赏
  • 举报
回复
C# 单点登录 MVC: http://www.cnblogs.com/jirigala/p/3263865.html CAS 实现单点登录 .NET MVC: http://www.cnblogs.com/woxpp/p/4653769.html
lys1978900 2015-12-30
  • 打赏
  • 举报
回复
单点登录,简单,所有登录后的页面,要继承一个基类页面,用缓存或者application记录登录时间和IP地址 基类页面判断当前IP是否和缓存IP一致,不一致就退出登录 登录的时候 把IP地址加入到缓存或者application
完美-态度 2015-12-30
  • 打赏
  • 举报
回复
没有人碰到类似的问题么?
scatking 2015-12-30
  • 打赏
  • 举报
回复
只能一个地方登录如果是指只能一台电脑登录,那么首次登录时用户表里绑个mac就行了。
BillHu233 2015-12-30
  • 打赏
  • 举报
回复
你设计数据库的时候,建立一个列,叫登录状态,A登录了,B登录的时候就查询状态,如果是登录状态就不给B登录 如果你想做成B登录,A就失效这种,你可以放给状态列放一个登录用户,A登录就是用户A,B登录了就是用户B,A再进行操作的时候发现用户已经不是A了就自动out

62,046

社区成员

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

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

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

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