最近做的一个项目要求使用C++的drogon框架编写一个web-server服务器,实现远端访问数据,以及一些其他的操作,由于牵扯到用户的登录与登出要求实现两个用户使用同一个账号密码登录互斥,下面简单介绍一个我的方案以及踩过的坑。
关于环境问题:
开发环境使用的drogon版本为1.8.4,为最新版本,github/gitee上有详细的项目教程和介绍,这里就不赘述。
以及下面是我的一些相关的配置,仅供参考:
要实现的功能:
主要为了实现两个用户使用相同的用户名和密码登录系统,则后面登录的用户会把前面登录的用户挤下线。
分析:
要实现这样一个功能用java可能会简单许多,因为java的web-server的session会话是可以被开发者获取并且操作的,但是由于我们使用的是drogon,虽然drogon也支持会话,但是除了从req请求中获取到会话中设定好的信息或者拿到会话ID以后就没有什么接口可以操作会话对象了,但是会话对象又是web服务端中必不可缺少的存在,就很烦,据我了解这是因为drogon好像并没有在服务端维护会话对象。而是通过其他的一些手段去控制会话,所以使用drogon来编写一个web-server实现用户互斥还是挺麻烦的。
思路分享:
我的设计方案是使用redis+过滤器实现上述功