阅读 104
RuoYi-Vue 前后端分离版代码浅析-在线用户监控

RuoYi-Vue 前后端分离版代码浅析-在线用户监控

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

本节介绍RuoYi-Vueruoyi-admin模块中的上传下载模块SysUserOnlineController 部分的代码,这个接口主要用来展示在线用户监控模块的情况

列表页面

这个接口是直接从Redis里面找到所有的登录用户信息的key出来,直接遍历将所有的数据返回到前端。

获取所有的登录key

使用的是RedisKeys 命令

Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
复制代码

使用Keys命令将所有的login_tokens:*获取出来

遍历所有的key获取所有的用户缓存

LoginUser user = redisCache.getCacheObject(key);
复制代码

之后就是对LoginUser进行类型转化了,这个接口是将所有的登录用户的信息一次性的返回到前台,50多用户就有11kb,如果用户量更多,那么肯定更慢,但是有好的办法来分页查询已登录的用户么?我觉得对于当前这种Redis里面保存登录用户的形式来说没有比较好的方式来避免。如果登录用户大数据量的话,可以考虑将登录用户的信息除了放到Redis里面还保存一份放到es里面,这样就可以去用es来分页了

不要忘记最后还要将得到的userlist进行次序反转。

        Collections.reverse(userOnlineList);
        userOnlineList.removeAll(Collections.singleton(null));
复制代码

强退用户

redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId);

复制代码

将用户的tokenId传入进来直接deleteObjectRedis里面对应的key

总结

对于小项目而言,这两个简单的功能就可以满足对用户管理的需求了,但是无用户态访问在网站实际业务中还是需要考虑是不是存在的,如果无需登录就能访问网站,那么就没有办法来进行访问控制了,这时候就要考虑别的手段来进行访问控制了。

文章分类
后端
文章标签