浏览器如果不用 Cookie,是不是就没办法做到“关闭浏览器再重新打开就要重新登陆”了?

2020-09-04 18:41:06 +08:00
 mitu9527

传统的网站可以使用“会话 Cookie”,如果浏览器关闭,这种 Cookie 就会过期,所以关闭浏览器后再打开该网站就要重新登陆。

如果换成前后端分离,并且因为跨域和部分客户端不支持 Cookie 导致不能使用 Cookie 的话,此时浏览器好像并没有什么办法能做到“关闭浏览器再重新打开就要重新登陆”,是不是这样呢?还是说有什么办法可以做到?

4172 次点击
所在节点    程序员
33 条回复
cigmax
2020-09-04 18:45:08 +08:00
jwt
javalaw2010
2020-09-04 18:46:26 +08:00
也许可以看看 SessionStorage
mitu9527
2020-09-04 18:46:36 +08:00
@cigmax JWT 能做到关闭浏览器后就失效么?好像不能吧
mitu9527
2020-09-04 18:48:21 +08:00
@javalaw2010 我不是前端,不过我也以为借助 SessionStorage 可以做到,去专门查了一下资料,好像并不可以。
JJstyle
2020-09-04 18:49:31 +08:00
localStorage 可以
mitu9527
2020-09-04 18:49:34 +08:00
@mitu9527 SessionStorage 貌似在多页应用下会出问题。
mitu9527
2020-09-04 18:50:17 +08:00
@JJstyle localStorage 不是永久存储么,浏览器关闭会自动清除么?好像不能吧。
JJstyle
2020-09-04 18:51:26 +08:00
@mitu9527 为什么要关闭浏览器自动清除 localstorage
mitu9527
2020-09-04 18:52:51 +08:00
@JJstyle 就是好奇是不是就不能做到传统网站那种“关闭浏览器后再打开就要重新登陆”了。
ochatokori
2020-09-04 18:53:16 +08:00
监听 close 事件清除 localstorage
crclz
2020-09-04 18:54:12 +08:00
服务端提供两种方式的认证:通过 cookie 、通过 header 里面附带一个 token (习惯于使用 jwt 来承载数据)。与之对应的是,服务端的登录接口要返回对应的 token 。

客户端如果不能使用 cookie,就使用 localStorage 。在执行登录的时候在 localStorage 保存返回的 token,并且在后续请求中在 header 附带这个 token 。
crclz
2020-09-04 18:55:19 +08:00
抱歉,看错问题了。
mitu9527
2020-09-04 18:56:17 +08:00
@crclz 你说的我知道,不过我不是在问 Token 、Session 和 Cookie 哈。
yushiro
2020-09-04 18:56:55 +08:00
是我语文没学好?还是 lz 表达错了?
不用 cookie,关闭浏览器,再打开网站,肯定要重新登陆啊,你的登陆信息没有保存。
mitu9527
2020-09-04 18:58:07 +08:00
@ochatokori 全清理了?那是不是所有本地数据都没了?如果是的话,虽然好像确实达到了目的,但是应该也会有副作用吧。
wanguorui123
2020-09-04 18:58:32 +08:00
了解下浏览器的 unload 事件
javalaw2010
2020-09-04 18:58:34 +08:00
@mitu9527 我也不是前端,只是开个脑洞:sessionStorage tab 页之间的上下文是独立的,那么是不是可以通过 tab 页面之间通信的方式共享 sessionStorage,从而达到全局共享同一个 SessionStorage 上下文内容的目的
ochatokori
2020-09-04 18:59:12 +08:00
不过本来这个就是 sessionstorage 做的事,不知道你说的多页面会出问题会出什么问题
JJstyle
2020-09-04 18:59:26 +08:00
抱歉我也看错问题了🤣
mitu9527
2020-09-04 18:59:37 +08:00
@yushiro 前后端分离一般都用 Token,不过我也忘记说了。

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

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

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

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

© 2021 V2EX