app 软件的登录状态一般是怎么做的呢

2024-06-15 10:25:10 +08:00
 qinconquer
我对于这个部分不是很熟悉,希望各位前辈指点迷津。

我目前的做法是通过 jwt 生成 token ,这里的 token 设置了过期时间,并存储再服务器上的 redis 中。这里的目的是为了限制用户的多个设备。

但因为设置了过期时间,会给用户造成掉登录的情况,请问有什么办法可以实现大部分的 app 都不会掉登录的情况吗。

或者是有更好的方法去实现我提到的问题吗。
1360 次点击
所在节点    问与答
5 条回复
rebornlv
2024-06-15 11:07:17 +08:00
如果要禁止多设备登录就不用 jwt ,直接生成一个加密的 token 字符串保存到 redis 中。
防止掉登录,可以设置一个过期时间+刷新时间,在有效刷新时间内可以刷新 token
superjojo
2024-06-15 11:22:13 +08:00
直接用 token ,每次请求进来都更新在 redis 中的有效期
lyusantu
2024-06-15 11:38:30 +08:00
token 过期时间给-1 或者>1 年就完事了,反正你是靠 redis 来管理的
budgerigar
2024-06-15 11:45:39 +08:00
再加一个 refreshToken ,app 登陆时刷新 token
XCFOX
2024-06-15 15:21:25 +08:00
都存 redis 了,那用 jwt 设过期时间也没有太大意义了。
我的建议是直接换成类 session token ,格式是 `{user-id}-{random-string}`,拿类 session token 作为键、用户信息作为值存进 redis 。

https://v2ex.com/t/979326

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1049708

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX