V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wemore
V2EX  ›  Java

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

  •  
  •   wemore · 2018-08-15 09:56:19 +08:00 · 11396 次点击
    这是一个创建于 2073 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2018-08-16 01:15:38 +08:00
    感谢各位老哥,现在情况变了公司前辈说前后端分离的用资源服务器来接入,单点文档让参考 OAuth2 Autoconfig,看了半天没看懂。单点文档说登录地址是 /oauth2/token,这个地址的域名也不知道应该是我后端的还是单点的==
    15 条回复    2019-10-10 16:35:57 +08:00
    yujunhao8831
        1
    yujunhao8831  
       2018-08-15 09:57:54 +08:00
    cors
    bayker
        2
    bayker  
       2018-08-15 11:52:03 +08:00
    前端定义一个 URL 接收 登陆返回的 token (业余开发的回答)
    kfg
        3
    kfg  
       2018-08-15 12:05:49 +08:00 via Android
    我最近也搞这样的小东西,前端 vue,后端 php,cas 单点认证,我是在前端判断是否有 sessionstorage,如果没有就跳转到 cas 登录页面,返回 st,通过 ajax 和 st 去 cas 验证取得用户信息,保存在前端 sessionstorage,后续就跟后端通过 token 处理其他业务
    lancelock
        4
    lancelock  
       2018-08-15 12:40:05 +08:00 via iPhone
    首先登录,拿到 token,存储在前端。之后根据本地是否有 token 来判断是否要重定向到登录页面,此外发起的 api 请求都带上 token 信息,给后端检验
    strugglexiang
        5
    strugglexiang  
       2018-08-15 13:13:25 +08:00
    router.beforeEach 搞定
    popvlovs
        6
    popvlovs  
       2018-08-15 15:01:39 +08:00
    spring-boot-oauth2 的逻辑我记得应该是:未登录访问受限资源时后台 response302,这种情况下需要前端啥也不做,让浏览器重定向就好了啊
    CFO
        7
    CFO  
       2018-08-15 15:11:27 +08:00 via Android
    @popvlovs 不是 会返回 401 重定向需要 client 端发起 因为 oauth 登录需要 clientid clientserect 和 callbackuri server 端只重定向过去不能用
    zhzer
        8
    zhzer  
       2018-08-15 16:12:23 +08:00
    spa 的话配置 vue-router 就完事了
    bsg1992
        9
    bsg1992  
       2018-08-15 16:44:11 +08:00
    你们是开发环境分离 还是部署上也是分离的?
    realkaiway
        10
    realkaiway  
       2018-08-15 23:50:14 +08:00 via iPhone
    前面的老哥基本回答的差不多了,通常的套路一般登录拿到 token,前端用 sessionStorage 储存好,之后的每一次 ajax 请求都在头部带上这个 token 给后端校验就谋问题啦~
    popvlovs
        11
    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
        12
    CFO  
       2018-08-16 11:53:33 +08:00 via Android
    @popvlovs 我说的 client 指的是 oauth client 是服务端
    zsail
        13
    zsail  
       2018-12-07 18:15:00 +08:00
    @CFO 你好,能加一下 Q 么,我遇到些单点登录的问题想请教一下
    chunleioo123
        14
    chunleioo123  
       2019-03-26 18:06:50 +08:00
    @CFO 有一个 CAS 集成的问题,想请教你一下 麻烦回复我一下邮件 希望能交一个朋友或者提供适当报酬 邮箱 [email protected] 期待您的来信 谢谢
    ivydom
        15
    ivydom  
       2019-10-10 16:35:57 +08:00
    用 authing 可以快速实现单点登录,快速体验:[https://sample.authing.cn/]( https://sample.authing.cn/),网站里有文档
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1366 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:44 · PVG 07:44 · LAX 16:44 · JFK 19:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.