最近用 c# 开发个客户端, 怎么确保只能单一用户登录。并且用户不退出,不能在其他设备登录。
1
zvcs 2017-07-06 21:57:50 +08:00 via iPhone
c 管不到 c,只能在 s 端控制。转前端吧
|
3
geelaw 2017-07-06 22:04:41 +08:00 via Android
读取硬件编码用于登录,但是你这个场景很可疑,值得思考是否需要重新设计
|
4
billlee 2017-07-06 22:26:04 +08:00
如果哪台设备丢了 /重装系统了 /数据文件被删了,岂不是再也登录不了了?
|
6
nfroot 2017-07-06 23:13:56 +08:00
简单啊,首先你的客户端登陆了服务器,服务器没有管控的吗?(比如可以查到当前连接到服务器有哪些客户端,登陆了什么用户)
然后拒绝登陆啊! 要么你就搞一个心跳包类似的数据库字段,超过一定时间段没通讯就算是未登陆了 如果还在那个时间段,服务器就尝试和客户端通讯一下,看看是不是还活着,活着就不给当前登陆用户登陆就好了。 这不难吧?没搞懂你是卡在哪一步了 |
7
czkwg8 2017-07-06 23:45:35 +08:00
同时在线这样的设定肯定在 server 实现啊
|
8
wafm 2017-07-07 00:04:13 +08:00 via iPhone
服务端唯一 session
|
10
msg7086 2017-07-07 02:14:46 +08:00
@JohnLou 玩游戏并不一定是你登录了就不能再登录了。
很多网页游戏就可以重复登录。 如果是联机游戏的话,因为客户端是与服务器持久连接,断线就意味着登出了。 而你这后端用 PHP 的话,不可能前后有持久连接,那么就应该和客户讨论决定,「什么样的场景认定用户掉线」。 |
12
geelaw 2017-07-07 07:13:01 +08:00 via Android
一个客户端多个用户登录是一个功能,如果你不做这个功能,又怎么可能出现一个客户端登录多个账户的情况?
|
14
imydou 2017-07-07 11:20:01 +08:00
登陆生成唯一 token,旧 token 失效
|
16
yansideyu 2017-07-07 16:15:39 +08:00
服务器端加个程序,tcp 或者 udp 通信,心跳包保证活跃,超过一定的时间就是掉线了,登陆的时候服务器检查活跃列表,在活跃列表的就不让登陆了
|