GET 方法有没办法传递 token

2021-06-24 15:23:47 +08:00
 balabalaguguji

有个网站,需要校验是否有权限,判断头部的 token 参数。

但是,直接在浏览器上输入网址后,能否自动头部添加 token 呢?

是不是只有 session+cookie 的方式了。

9005 次点击
所在节点    程序员
80 条回复
Rheinmetal
2021-06-25 10:25:13 +08:00
需求的核心逻辑不清楚 没法给可用方案
Felldeadbird
2021-06-25 10:30:27 +08:00
@balabalaguguji 肯定不用用户手动输入了。以小程序为例,我是放在 local storage 。里面有时效和设备信息。然后和小程序官网的设备信息校验。

在鉴权方面,根据接口的情况,选用 GET OR POST 形式把 TOKEN 从 local storage 带过去。一般来说,会封装好一个请求方法,里面自带鉴权 TOKEN 提交。
feifeichen
2021-06-25 10:40:31 +08:00
浏览器里域名对应的储存不就是 cookie 和 storage 数据库,但是只有 cookie 是浏览器自动添加的,你不想用 cookie 。用户浏览器输入的域名又不会走脚本,不就只有访问到的这个地址去进行操作。判断跳转中间页那个实现方法比较现实点
NillSpake
2021-06-25 10:41:16 +08:00
@balabalaguguji 中间件,redis 等等。。,你可以后台操作 token 时效
jsq2627
2021-06-25 10:42:13 +08:00
有一说一,拦截 get 请求、附加 header 用 service worker 能实现
只是这需求,放着 cookie 不用干嘛
xwayway
2021-06-25 10:45:32 +08:00
@balabalaguguji 非要这么搞的话,我觉得可以用 cookie 了,后端加个兼容逻辑就行了,header 取不到 token,再取 cookie 中的嘛,都没有才走认证逻辑
xwayway
2021-06-25 10:47:29 +08:00
@balabalaguguji 也不一定是后端做,在 nginx 做就行了,如果 header 中没有 token,从 cookie 中取出来,放 header 里面就行了
passerbytiny
2021-06-25 10:48:51 +08:00
@balabalaguguji 你的真实问题是不是:GET 时,怎么将 localstorage 中保存的 Token,带到 Header 上。

地址栏输入地址的 GET,跟代码调起来的 GET,大概也就这一点区别。而且这问题不只发生在地址栏访问上,点击超链接的跳转同样会发生该问题。
fgk
2021-06-25 10:49:33 +08:00
@xwayway 我也觉得这个业务场景,cookie 就可以满足了,不用 token 了
ysc3839
2021-06-25 10:52:38 +08:00
把 token 放在 cookie 里不行吗?一样是在 header 里面传给后端。
no1xsyzy
2021-06-25 10:58:27 +08:00
一个 SPA 改 SSR ?

服务器在浏览器上存数据,就是 cookies localstorage idb 三剑客,后面两个只能 js 访问

没权限就白屏,还 SEO,那搜索引擎的 spider 哪来的权限呢?
你就当没权限的渲染,然后渐进地提供需要 token 的部分啊?
uselessVisitor
2021-06-25 11:15:45 +08:00
套一个 iframe 行吗
zhaol
2021-06-25 11:16:03 +08:00
@no1xsyzy #71 按他这么说,就必须一开始就有 token,不然这网页没得玩。我实在没理解他的需求。难道本不应该就存在没权限情况下的判断嘛,按那个逻辑继续处理不就行了?
balabalaguguji
2021-06-25 11:43:52 +08:00
@zhaol #73 没登录过就直接跳转到登录页面了,这个没什么争论所以不讨论。只讨论已登录情况
balabalaguguji
2021-06-25 11:44:59 +08:00
@falcon05 #46 之前是放在 localstorage 里的,嗯,我应该把它改为放在 cookie 就可以了。
balabalaguguji
2021-06-25 11:50:24 +08:00
@xwayway #66 嗯,cookie 中多存一份 token,这种方式感觉挺好。不过还有个问题,我分享项目时用的是分享 token 每个项目都会有一个,如果也用 cookie 来存储这些分享 token,打开很多个项目的分享页面后 token 就会很多了。
balabalaguguji
2021-06-25 11:51:37 +08:00
@ysc3839 #70 嗯,你点醒了我,我之前一直想着 cookie 是配合 session 用的,用来存储 session id 的,怎么就没想到可以存 token 呢(哭)
no1xsyzy
2021-06-25 11:59:37 +08:00
@balabalaguguji #74 根据附言 2,你不是在做 SEO 吗?
可是搜索引擎的 spider 访问你,你直接跳转登录界面了,那不是白瞎?也就是说实际情况,如果我猜的没错的话,是「部分页面需要权限,则跳转登录页,部分页面公开访问,需要做 SEO 」
那我还是推荐一下渐进式体验。

#76 你可以把所有的项目分二级域名或者子目录,cookies token 存到对应下面。
pluvet
2021-06-25 12:14:08 +08:00
用 url 传也可以,但是 token 做成动态的,类似 2fa
balabalaguguji
2021-06-25 12:28:59 +08:00
@no1xsyzy #78 是的,部分页面是完全公开不需要授权的

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

https://tanronggui.xyz/t/785554

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

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

© 2021 V2EX