Laravel项目和 vue.js/nuxt.js项目 如何进行单点登录,目前laravel 本身有个原生项目(企业会员系统),现在又开发了一个nuxt的项目的个人中心,要求跟企业会员系统关联,单点登录。

1. 运行环境

laravel项目 和 nuxt.js 项目

1). 当前使用的 Laravel 版本?

laravel 6.0

2). 当前使用的 php/php-fpm 版本?

PHP 版本:php7.4

3). 当前系统

CentOS 7

2. 问题描述?

现在有一个laravel模板项目是企业会员 网址:merchant.yizhan.test
现在又实用nuxt 2.15 /vue.js开发了一个前端系统,系统中有个人中心,目前个人中心验证是用的JWT验证权限验证是用的 (nuxt/auth 4.9)扩展
项目网址 www.yizhan.test

3. 您期望得到的结果?

我期望 在 www.yizhan.test 登录时,如果判断用户是企业用户,登录 merchant.yizhan.test
如果是个人用户登录 www.yizhan.test 我想要具体的思路和方案

JiaHeng
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

有两种方式

  • 1、可以通过共享cookie ,需要使用相同的一级域名,比如 a.domain.com b.domain.com. 设置cookie的时候 域名参数写 .domain.com 这样两个系统就都可以获取到 cookie 如果使用api的方式就可以 a.domain.com、 b.domain.com 共同请求 api.domain.com 这样设置的cookie都可以在 api.domain.com 后端中获取到
  • 2、使用sso认证的方式 可以选择一个系统作为认证使用 比如 a.domain.com 作为认证使用。当用户打开 b.domain.com 的时候如果发现没有登陆可以跳转到 a.domain.com/login?callback=b.domain.com,然后用户登陆成功可以 重定向到 b.domain.com?ticket=xxxxx. 然后 b.domain.com 系统拿到 ticket 去请求 a.domain.com 拿到用户信息 保存登陆状态

如果有问题还望大佬纠正一下

1年前 评论
讨论数量: 12
mouyong

做跨域 sso

1年前 评论

先看准备采用哪种 单点登录协议,然后各端分别接入

1年前 评论
JiaHeng

我想要一个具体的思路,现在主要是没思路,目前系统就是 自己登录自己的。想要一个流程 思路

1年前 评论
JaguarJack 1年前
lddtime 1年前

SSR 项目中将 JWT 信息以 Cookie 的方式设置到 yizhan.test,Laravel 项目中添加用于处理 JWT 并登录的中间件!

付费的解决方案和思路可以参考:Authing

1年前 评论

简单实现:

前提:同一个主域名

1、登录的时候,后端判断,带上标识,个人/企业,取到 token 的时候判断下这个用户属性,前端直接跳转对应地址
2、注意:jwt存cookie ,限制主域名即可

1年前 评论
mouyong 1年前
mouyong

一句话,我要方案,请给我方案。就想问一下,为什么?凭什么?

1年前 评论
mouyong (作者) 1年前
陈先生

其实方案有很多,Cookie 也可以,单点登录也可以,JWT 都可以做,不过我建议你可以改变一下问问题的语气,当然我知道你不是有意如此。

1年前 评论

有两种方式

  • 1、可以通过共享cookie ,需要使用相同的一级域名,比如 a.domain.com b.domain.com. 设置cookie的时候 域名参数写 .domain.com 这样两个系统就都可以获取到 cookie 如果使用api的方式就可以 a.domain.com、 b.domain.com 共同请求 api.domain.com 这样设置的cookie都可以在 api.domain.com 后端中获取到
  • 2、使用sso认证的方式 可以选择一个系统作为认证使用 比如 a.domain.com 作为认证使用。当用户打开 b.domain.com 的时候如果发现没有登陆可以跳转到 a.domain.com/login?callback=b.domain.com,然后用户登陆成功可以 重定向到 b.domain.com?ticket=xxxxx. 然后 b.domain.com 系统拿到 ticket 去请求 a.domain.com 拿到用户信息 保存登陆状态

如果有问题还望大佬纠正一下

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!