• 为了实现相同账号不能重复登录功能做的努力


    就像QQ那样的,相同的一个QQ账号是不可以同时在不同的地方登陆的。QQ采用的方式是,采用相同账号后登陆的用户将会把先登录的用户“挤掉”。但是我觉得,这样做并不是做好的做法。考虑一种情况,后一个登录的用户是非法的,这样一来,这个非法的用户就把前一个合法的用户“挤掉”了,如果能够实现相同账号始终只能登录一次,在登录状态下,后登陆的用户发出的登录请求被拒绝,那么,只要合法用户始终在线,非法用户就无法对前一个合法的用户产生威胁。但是这种做法似乎也存在一定危险:如果前一个登录者是非法用户呢?合法用户将始终无法正常登录!如果是QQ的话,估计这种做法该丢的东西全都丢了吧。所以,两种做法,我觉得应该是各有裨益,要视情况而定了。

    努力了很久以后,还是决定了使用类似QQ的做法,后登录者将会把先登陆者挤掉。很大一部分原因,是因为,还没有想到合适的方法实现拒绝后登陆请求。而将前一个挤掉的做法,似乎比较简单。我只是在数据库中添加了一个标记用户登录状态下的sessionid,每次都判断session id的值有没有变化,如果有变化就说明当前账号在不同的地点或者新的会话中登录了。如果要实现像QQ那样同一账号在同一台机器上登录时提示不能重复登录的话,只要把标记改成是用户机器的IP即可。感觉上还是比较清楚的。

    之前我在园子里也提到过这样的问题,有人提示我用application来实现,并给出了实现的C#代码。但是我觉得,这样做并不是很好。如果用户账号一多,临时存储的空间会不会很大呢?如果像我这样在数据库中做的话,无论如何有用户的存在就一定要有一个用户表,在这个表上加上一个字段,影响不是很大,唯一不好的地方就是数据库访问有点过于平凡,由于每次都要判断用户是否从其他地方登陆了,是要有页面请求,就要判断一次。

    先就这样实现了,期待以后会有更好的方法来实现这样的功能,或者哪位园子里的朋友路过可以指点我一下,我将感激不尽!

  • 相关阅读:
    个推推出青少年网络游戏防沉迷解决方案,助力开发者构建完善的青少年保护系统!
    个推2022届校园招聘火热启动!数据岗、算法岗、研发岗,热门技术岗位等你来!
    iOS里的动态库和静态库
    idea中svn回退到指定版本
    稻花香项目接口文档
    Ubuntu系统记录
    获取当前系统名称、获取当前操作系统信息
    Temporary failure in name resolution
    零基础学python:错误与异常
    Python内置函数之输入输出函数
  • 原文地址:https://www.cnblogs.com/malloc/p/1732698.html
Copyright © 2020-2023  润新知