gin框架写web app,用jwt认证用户,怎么实现退出登录?

gin框架写web app,用jwt认证用户,怎么实现退出登录?
登录逻辑就是对比用户名密码,如果正确就生成jwt,然后客户端保存到localstorage。

问题:
退出登录的逻辑应该是怎样呢?

阅读 7.1k
2 个回答

在jwt加入一个参数,如果退出登录就更改这个参数,这样jwt验证就通不过了,这样可以作为任何失效的条件,比如修改了密码需要重新登录,一样只要改这个参数就可以了

误解了题主的意思重新编辑一下!token是不能主动退出像session一样。你可以在服务端加个黑名单,具体实现声明一个slice类型叫slice_token,比如用户1点击退出,它的token1存入slice_token,每次请求的验证不是取token的列表嘛,在之前先进入slice循环遍历。如果在说明已经退出,返回授权失败即退出登录的效果。但是对slice_token这个slice要做一些数据增删处理,不可能越来越多一直存放。 把储存的slice_token里的token1到真正的token的列表比对,如果失效了,就删除了。这样做简单粗暴,但是每次请求都会执行增删。更合理的应该引入缓存比如redis,储存黑名单列表,每次验证在缓存里的黑名单列表。对人失效的黑名单删除失效的(这里存放的是用户点击退出的token1),你另外写个定时器,对缓存里的黑名单列表操作,与主业务就无关了,可以解耦合

推荐问题