前后端分离,如何让用户强制下线?

在一个前后端分离的项目中,管理页面支持管理员强制用户下线(类似于账号锁定),目前的做法是修改用户权限,然后让 token 过期,当用户再次向后端发送请求的时候鉴权失败,但是这不够 实时 ,只有当再次登录或者发送请求进行鉴权的时候才能知道自己被封号了,如何让用户立刻知道自己被封号,然后跳转到登录界面?


回答:

有两个方案
方案一: 如果用户不够多,并且不想引入新的组件的话,可以通过轮询的方式来实现,就是设置一个定时器,比如每隔1分钟就请求一个校验鉴权的接口,一旦发现权限失效就立马回到登陆页,理论上只要轮询的时间够短,这个过程就可以看成近实施
缺点: 对服务器压力与资源比较大,如果用户比较多的情况下不建议使用
方案二: 引入websocket,这样能实现客户端与服务端双方通信,就是客户端能发送消息给客户端,客户端也能发送消息给服务端,这样能当服务端封锁了账号,客户端能实施获得到通知
缺点:引入的新的技术栈,导致增加维护系统的工作量与开发


回答:

技术上没什么做不到的,只有值不值得、有没有必要。所以建议先想一想这个需求的必要性。

如果真的有必要,方案也很多,比如客户端通过 ws 连上后端,到时候直接踢掉用户就可以。


回答:

简单粗暴就在前端顶层页面弄个定时任务不停请求后端,检测到token过期就跳到登录页面


回答:

前端使用websocket和服务端建立连接,进行双端通信即可


回答:

现在的APP双向通讯的需求很常见的(来自与通知/IM等需求),我做过的APP几乎都可以双向通信,那么能双向通信了,剩下的就简单了,最近我们做的类似功能是利用的IM的信道进行kill通知


回答:

不知道你当前鉴权是咋实现的,踢下线我觉得没必要前端轮询,前端页面更新之类的倒是可以。
建议加强鉴权逻辑,后端抽离成中间件进行请求拦截处理,为了加强性能token 一定要放redis。强制下线时,更新对应用户的token ,给token加个标记或直接删除,客户端也可以做响应拦截器,以axios为例,增加逻辑去重新登录或告诉用户被封号。

以上是 前后端分离,如何让用户强制下线? 的全部内容, 来源链接: utcz.com/p/945426.html

回到顶部