前后端分离后单点登录的问题

2018-08-15 09:56:19 +08:00
 wemore

萌新刚到公司要开发个网站,用到公司的统一登录接口。公司统一认证给的文档是 spring-boot-oauth2 的,实际实现后发现打开任何页面立刻跳到统一登录页面,这样前端怎么办?没搞过前后端分离这种操作,请各位大佬给些意见。前端用的 vue,后端用的 springboot,跨域用 nginx 映射到同一个域解决的

11413 次点击
所在节点    Java
15 条回复
yujunhao8831
2018-08-15 09:57:54 +08:00
cors
bayker
2018-08-15 11:52:03 +08:00
前端定义一个 URL 接收 登陆返回的 token (业余开发的回答)
kfg
2018-08-15 12:05:49 +08:00
我最近也搞这样的小东西,前端 vue,后端 php,cas 单点认证,我是在前端判断是否有 sessionstorage,如果没有就跳转到 cas 登录页面,返回 st,通过 ajax 和 st 去 cas 验证取得用户信息,保存在前端 sessionstorage,后续就跟后端通过 token 处理其他业务
lancelock
2018-08-15 12:40:05 +08:00
首先登录,拿到 token,存储在前端。之后根据本地是否有 token 来判断是否要重定向到登录页面,此外发起的 api 请求都带上 token 信息,给后端检验
strugglexiang
2018-08-15 13:13:25 +08:00
router.beforeEach 搞定
popvlovs
2018-08-15 15:01:39 +08:00
spring-boot-oauth2 的逻辑我记得应该是:未登录访问受限资源时后台 response302,这种情况下需要前端啥也不做,让浏览器重定向就好了啊
CFO
2018-08-15 15:11:27 +08:00
@popvlovs 不是 会返回 401 重定向需要 client 端发起 因为 oauth 登录需要 clientid clientserect 和 callbackuri server 端只重定向过去不能用
zhzer
2018-08-15 16:12:23 +08:00
spa 的话配置 vue-router 就完事了
bsg1992
2018-08-15 16:44:11 +08:00
你们是开发环境分离 还是部署上也是分离的?
realkaiway
2018-08-15 23:50:14 +08:00
前面的老哥基本回答的差不多了,通常的套路一般登录拿到 token,前端用 sessionStorage 储存好,之后的每一次 ajax 请求都在头部带上这个 token 给后端校验就谋问题啦~
popvlovs
2018-08-16 11:42:05 +08:00
@CFO 我理解也不是很深刻,但记得 clientid 和 clientsecret 应该是不能存放在浏览器的,所以怎么能用浏览器发起重定向呢(前端应该是不知道 client_id 和 client_secert 的)?我记得官方的例子是一个集成了 spring-boot-oauth-client 的后台应用返回 302 ( client_id, client_secert 和 redirect_uri 都拼好),然后指导浏览器进行跳转...
CFO
2018-08-16 11:53:33 +08:00
@popvlovs 我说的 client 指的是 oauth client 是服务端
zsail
2018-12-07 18:15:00 +08:00
@CFO 你好,能加一下 Q 么,我遇到些单点登录的问题想请教一下
chunleioo123
2019-03-26 18:06:50 +08:00
@CFO 有一个 CAS 集成的问题,想请教你一下 麻烦回复我一下邮件 希望能交一个朋友或者提供适当报酬 邮箱 13650521814@139.com 期待您的来信 谢谢
ivydom
2019-10-10 16:35:57 +08:00
用 authing 可以快速实现单点登录,快速体验:[https://sample.authing.cn/]( https://sample.authing.cn/),网站里有文档

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

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

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

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

© 2021 V2EX