我司 Java 后端的骚操作

2019-02-22 09:20:00 +08:00
 xutao881

我们公司的多点登录一直没实现,今天早上公司的 JAVA 找我说,让我前端来实现用户的多点登录,只要把 sessionID 和 token 存下来就行了,我特么喵也是醉了,是我技术水平不够么?我怎么有点懵逼呢?用户多点登录居然让前端来做??

19336 次点击
所在节点    程序员
155 条回复
wolfie
2019-02-22 15:09:24 +08:00
@passerbytiny #118
搞得好像全世界只有你自己才知道会话是什么意思,你看懂人家后端要 session_id 是干嘛的?
no1xsyzy
2019-02-22 15:20:29 +08:00
多标签页不同用户登录……
这需求不如单标签页多用户登录简单
一个 session 对多个 token 就行了吧,大不了自己维护 token
shenyuzhi
2019-02-22 15:23:12 +08:00
没有 server 的配合,是不可能单点登录,不然就是浏览器的严重的安全问题了。
shenyuzhi
2019-02-22 15:25:07 +08:00
好吧,没看清楚,说的是单设备多用户。
这个可以参考下 Gmail。
donnior
2019-02-22 15:29:27 +08:00
10 年后端对什么是多点登录一脸懵逼。。。
xuanbg
2019-02-22 15:52:20 +08:00
SSO 肯定需要前端做的呀,光后端支持有个蛋用。。。
JKeita
2019-02-22 16:01:40 +08:00
后端说得没错。。。肯定要前端存 token,然后每次请求把 token 带上来判断是哪个用户
lrseee
2019-02-22 16:06:55 +08:00
多点登录?
NullWithMe
2019-02-22 16:12:11 +08:00
java 后端:不被这个锅 233333
laminux29
2019-02-22 16:14:11 +08:00
多标签登录多用户吗?实现很简单啊:

新开一个页面,按有无前页面传值,分为 2 种情况:

1.前页面无任何值传过来,则新页面按照无用户登录处理。

2.前页面如果传递用户 id 过来,则让后台把该 id 对应的用户数据找出来显示在前端页面上,然后让后台把该页面上的所有能打开新页面的地方(比如链接)都带上这个值来做后续的值传递,不就行了。
liuxey
2019-02-22 16:25:33 +08:00
你们吓得楼主不敢说话了,其实都是表达的问题,后端说给楼主听的时候没动听,楼主阐述的时候你们没听懂
brant777
2019-02-22 16:28:57 +08:00
多点登录 0.0....不做单点登录限制不就是多点登录吗?这应该是同终端多用户登录,要解决的应该是多用户登录后本地 token 被覆盖的问题
66beta
2019-02-22 16:45:27 +08:00
多标签页多用户,多开几个隐身模式不就行了,为什么还要特地开发

另外这个需求的背景是什么?
passerbytiny
2019-02-22 16:56:19 +08:00
@wolfie #120 我对你的无知和自以为是已经没办法了,退。既然你这么懂,那么你就好好教教楼主该怎么做吧。

@laminux29 #128 漏洞:你的认证校验依据只有用户 ID,还是在 URL 上的,安全隐患极高。麻烦:所有链接都要加上与主功能无关的用户 ID,不是一般的麻烦。
wolfie
2019-02-22 17:11:15 +08:00
@passerbytiny #134
自己没理解人家讲的是什么,先来一句你先看看 xxx,结果被打脸就不敢继续说下去了?
a15819620038
2019-02-22 17:25:52 +08:00
多点登录?多端登录?
kakudesu
2019-02-22 17:33:51 +08:00
不懂,看大佬们辩论
qianzhaoy
2019-02-22 17:50:42 +08:00
chrome 插件 SessionBox ?
123qqqqqq
2019-02-22 17:51:58 +08:00
哈哈哈,成功逗笑了我
Vegetable
2019-02-22 18:00:18 +08:00
技术人员应该致力于解决问题.
这个问题不是前端自己可以完美解决的.

分析一下需求:
核心:多个标签页维护不同的用户登陆状态

需要解决的核心问题:
> 怎么在相同 domain,不同标签页之间,维护不同的用户 state?

因为 localstorage 和 cookie 是共享的,排除.

不同标签页之间,可以说只有 js 变量空间里的变量值和 url 可以是不同的.从这两方面下手.

* 如果将 state 维护在 js 变量里,刷新页面啥都没了,不行
* 存在 url 里?也不合适,但是实际上是行得通的.

为了避免刷新没,localstorage 或者 indexdb 必须要用,为了隔离,可以使用 url querystring 来保存用 tab 标识.


那么方案应该是这样:

* 登陆正常返回 token 和用户信息,以及一个**tab 标识**
* 前端使用 tab 标识,在本地储存中建立容器隔离保存 state,需要保证一个默认容器
* 所有 url 变更都要保留 tab 标识,一旦 url 失去了该标识,就只能指向默认那一个用户,当然也可以使用全局变量做备份

* 定时清理

这个思路做下来,功能倒是实现了,但是这需求真的有点...隐身模式学习一下吧...

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

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

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

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

© 2021 V2EX