管理员可以强制用户下线,如何遍历会话,并强制会话关闭。
------解决思路----------------------
简单说,你可以在你的wcf服务中设计一个“登录”功能,它返回一个随机产生的“授权编号”,例如是一个guid编号。客户端首先需要调用这个登录功能进行登录,获取会话编号。以后的几乎所有wcf服务也都必须同时以编号作为参数之一。
可以在你的服务器端保存每一个授权编号对应的“用户名、用户密码、最后一次访问服务器的时间、最近5分钟使用过的ip(这通常都是异步登记的,而不是在每一次处理客户端服务请求时同步记录)、购物车,等等信息。按照你的业务需要而设计。
而“注册”功能恰好是为数很少不需要提供这个编号的调用之一。注册与登录、在线其实是无关的。
由于wcf是无状态的,服务器不可能知道、也不关心客户端是否随时在线。你只能通过“最后一次访问服务器的时间”来判断客户端是否疑似离线。因此通常要求客户端定时(例如最长间隔3分钟)发一个简单的“心跳消息”。
你的wcf服务要“强制下线”一个会话,其实就是在自己的列表中删除对应的编号的记录。客户端得不到任何通知。
------解决思路----------------------
上面的代码的作用有:
1、在登录的时候在服务器上注册自己
2、每次调用wcf服务的时候进行身份验证并且更新最后在线时间
3、控制最大在线用户数量
4、限制一号多开
------解决思路----------------------
把连接断掉,并给客户端发送信号,使它强制下线