java做app后台如何知道用户已经登录了?

java做app后台如何知道用户已经登录了?

皇甫轩 发布于 2021-11-28 字数 89 浏览 770 回复 20

网页开发中使用session来判断用户是否已经登录了。但是在app+java后台怎么判断用户已经登录了?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(20

掩饰不了的爱 2021-12-01 20 楼

楼主分享一下你的方法吧

贱贱哒 2021-12-01 19 楼

我知道该怎么做了。感谢你耐心的回答!

可是我不能没有你 2021-12-01 18 楼

回复
其实我也正准备做这一块,遇到的问题都一样。所以正好大家一起讨论。

做个少女永远怀春 2021-12-01 17 楼

回复 @Issac在路上 :

 1.首先你可以把间隔设长一点。

2.这个问题在客户端app里面,注册一个android的静态广播监听,接收每小时的广播事件,然后每个一个小时或者每隔一天,客户端启动,更新一下token,然后自己把自己关掉,用户不知道,而且你可以获取用户手机的mac地址,imei号,加密后作为token的一部分进行验证。

3.或者如果不是特别关心安全性,直接给一个永久有效的token也行。 因为在客户端主要是手机,结合用户原名+手机无线网卡的mac地址生成的用户名,生成的token,在手机mac改变的时候,会失效的。所以,甚至可以允许像微信一下的自动就登上去。

我这个实现是为了防止token被人窃取,主要也是在single page application的网站中使用,才加入的时间戳。而因为加入时间戳,但是时间戳只能作为字符串使用,所以跨时段的超时,没法判断,比如在2点59分登陆,3点01分用户没再次操作,就超时了。所以需要双key进行跨时间点处理。

还有,如果app一直开着,就更好办了,直接在程序里面启动一个线程,每隔1到两个小时,随便访问一个接口,顺便更新一下token就行。

只为守护你 2021-12-01 16 楼

@
月影又无痕的方案应该是最通用的方案,而且实时性也比较高

情绪失控 2021-12-01 15 楼

楼上是正确的思路...

冷默言语 2021-12-01 14 楼

登录的时候服务端不做处理吗? 把登录用户放到服务端缓存当中。 

定时检测缓存中的登录用户是否有效。 

后知后觉 2021-12-01 13 楼

我之前使用dwz的服务器推做过,当时的需求是,某一个人发一条公告,其他人可以看到

囚你心 2021-12-01 12 楼

就是安卓

囚你心 2021-12-01 11 楼

app 是指 什么? 移动  web app ? 是的话, 移动设备浏览器也是有session的  sessionStorage

拥有 2021-12-01 10 楼

这样会不会代价太高了

剑心龙吟 2021-12-01 9 楼

回复
我觉得@月影又无痕的方法可以考虑下。

私藏温柔 2021-12-01 8 楼

万一用户不点退出,直接关浏览器也不行的

剑心龙吟 2021-12-01 7 楼

没做过,但是第一时间想到在后台建张表,登录的时候往上面插一条数据,退出的时候删掉这条数据。欢迎楼下的拍砖。

奈何桥上唱咆哮 2021-12-01 6 楼

你好,我想再问一下,采用这种token的方式,那么在服务器端这个token保存在数据库中还是内存中比较好一些?如果保存在内存中,那么采用一张hashtable来保存合理吗?

梅窗月明清似水 2021-12-01 5 楼

对了这个应用类似于新闻客户端,没有像聊天应用那种需要很即时的通讯要求。

虐人心 2021-12-01 4 楼

回复
token在服务器端不保存的,只保存在客户端。客户端每次提交都提交两个token,然后获取服务器生成的新token

噩梦成真你也成魔 2021-11-30 3 楼

回复
http://www.oschina.net/code/snippet_1378360_33645 可以参考这个代码。

离去的眼神 2021-11-29 2 楼

您好,我看了你的代码,这个思想很棒啊。但是,限定了token的有效时间会不会不合适?客户端app一般都是登录了之后,app一直不会关闭,比如限定1小时后token无效,他把app一直在后台开着十个小时,那么再次进入的时候,由于token失效那么app就再次回到启动页面然后在后台去登录获取新token吗?但是我看很多app我在后台放着它好几个小时再次进入还是很正常地操作呀。

深巷少女 2021-11-28 1 楼

推荐用无状态思想进行设计,简单来说每次访问都带token。

还有用户表里面有个last_update的属性。记录用户上次使用的时间,超过30分钟没更新最新的时间,就认为他掉线了。(或者干脆把用户所有的操作全部记录和发生操作的地理位置存到日志表里面。为了以后进行数据挖掘,这都是最值钱的玩意,hadoop就是干这个的。)

这样的好处,以后规模变大,做负载均衡非常容易。直接round robin不用考虑session。