You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于WordPress的Laravel、Moodle应用单点登录(SSO)实现方案咨询

同域名下WordPress+Laravel+Moodle SSO与权限管控实现方案

该场景下最优方案基于同域名共享Cookie+中心化权限校验实现,无需搭建额外的独立身份提供商服务,改造成本低、兼容性强,具体实现逻辑如下:

1. 统一身份凭证生成与共享

三个应用部署在同一根域名下,天然支持跨子目录共享Cookie,首先完成身份凭证的统一生成:

  • WordPress作为唯一登录入口,用户登录成功后,生成加密的用户身份凭证(推荐用JWT,payload仅存用户ID、角色、过期时间三个核心字段),存入Domain为根域名(例如yourdomain.com)、Path为/、开启HttpOnly、Secure(HTTPS环境必开)、SameSite=Lax属性的Cookie中。
  • 加密密钥三个应用共用,凭证加密算法选择对称加密(例如AES-256)即可,避免明文泄露用户信息。
  • 关闭Laravel、Moodle的默认独立登录入口,所有未登录请求统一跳转至WordPress登录页。

2. 子应用身份校验改造

两个子应用新增身份校验逻辑,无需用户二次输入账号密码即可自动完成登录:

Laravel应用改造

新增全局请求中间件,所有请求处理前先执行以下逻辑:

  • 读取根域名下的共享Cookie,解密校验身份凭证的有效性与过期时间
  • 凭证无效/过期:直接跳转至WordPress登录页
  • 凭证有效:将凭证内的用户信息同步至Laravel本地用户表(无对应用户则自动创建),初始化Laravel本地会话,用户直接进入应用

Moodle应用改造

Moodle支持自定义认证插件,无需修改核心代码即可完成适配:

  • 开发轻量自定义认证插件,逻辑与Laravel中间件一致:请求进入时先校验共享Cookie的凭证有效性,校验通过则同步用户信息至Moodle本地用户表,自动初始化Moodle登录会话
  • 禁用Moodle自带的账号密码认证方式,仅保留自定义认证逻辑

3. Laravel管控Moodle访问权限实现

有两种落地方式可选,可根据你的服务器配置灵活选择:

  • Web服务器层转发校验:在Nginx/Apache配置中新增规则,所有访问Moodle子目录的请求,先转发至Laravel的权限校验接口,接口返回有权限则反向代理到实际的Moodle服务,无权限则返回403或跳转无权限提示页
  • Moodle认证插件扩展:在上述Moodle自定义认证插件中新增权限校验步骤,身份校验通过后,调用Laravel的内部权限接口(同服务器内网调用延迟极低),查询当前用户是否有权限访问当前Moodle页面,校验通过才允许进入,否则拦截
    两种方式的权限规则都仅在Laravel侧配置维护,Moodle侧不存储任何权限规则,后续调整权限仅需修改Laravel逻辑即可。

方案优势

  • 无额外服务依赖,无需搭建OIDC、SAML等独立身份提供商服务,运维成本极低
  • 同域名Cookie共享完全符合浏览器安全规范,无跨域兼容问题
  • 用户体系自动同步,无需手动维护三套应用的用户数据
  • 权限逻辑集中管控,后续迭代成本低

内容的提问来源于stack exchange,提问作者Ghayathri Ramaraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:27:03