Laravel单点登录和多端认证源码如何编写?

2026-05-03 00:192阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1170个文字,预计阅读时间需要5分钟。

Laravel单点登录和多端认证源码如何编写?

由于默认行为仅清除当前会话,不触及数据库中的+session+记录或其他设备的+token+,Laravel的+session+驱动(如file或redis)本身不提供跨设备会话管理能力。+logout()+函数仅删除当前请求绑定的session ID对应的数据,其他设备仍然可能持有旧的token进行访问。

常见错误现象:Auth::logout() 后,手机端或另一个浏览器仍能正常调用 API、访问受保护路由;后台查 personal_access_tokens 表发现旧 token 还在且未过期。

  • 必须主动失效所有该用户的 token,不能只依赖 session 清除
  • 如果用的是 Sanctum,要删 personal_access_tokens 表中对应 tokenable_idtokenable_type 的记录
  • 如果用 Passport,得调用 $user->tokens()->delete(),而不是只删当前 token
  • 注意:删 token 后,正在使用的 API 请求会在下一次验证时失败(401),但不会“实时中断”已建立的连接

Sanctum 实现单点登录:覆盖 createToken() 并清理旧 token

Sanctum 默认允许一个用户无限创建 token,不做互斥控制。要实现单点登录,得在生成新 token 前,把该用户所有已有 token 干掉——这是最直接、副作用最小的做法。

使用场景:App 登录、网页登录共用同一套 Sanctum token 体系,要求新登录即作废旧登录。

阅读全文
标签:Laravel

本文共计1170个文字,预计阅读时间需要5分钟。

Laravel单点登录和多端认证源码如何编写?

由于默认行为仅清除当前会话,不触及数据库中的+session+记录或其他设备的+token+,Laravel的+session+驱动(如file或redis)本身不提供跨设备会话管理能力。+logout()+函数仅删除当前请求绑定的session ID对应的数据,其他设备仍然可能持有旧的token进行访问。

常见错误现象:Auth::logout() 后,手机端或另一个浏览器仍能正常调用 API、访问受保护路由;后台查 personal_access_tokens 表发现旧 token 还在且未过期。

  • 必须主动失效所有该用户的 token,不能只依赖 session 清除
  • 如果用的是 Sanctum,要删 personal_access_tokens 表中对应 tokenable_idtokenable_type 的记录
  • 如果用 Passport,得调用 $user->tokens()->delete(),而不是只删当前 token
  • 注意:删 token 后,正在使用的 API 请求会在下一次验证时失败(401),但不会“实时中断”已建立的连接

Sanctum 实现单点登录:覆盖 createToken() 并清理旧 token

Sanctum 默认允许一个用户无限创建 token,不做互斥控制。要实现单点登录,得在生成新 token 前,把该用户所有已有 token 干掉——这是最直接、副作用最小的做法。

使用场景:App 登录、网页登录共用同一套 Sanctum token 体系,要求新登录即作废旧登录。

阅读全文
标签:Laravel