Laravel Sanctum 可选认证实现:允许游客和登录用户访问同一路由

霞舞
发布: 2025-09-26 16:44:01
原创
971人浏览过

laravel sanctum 可选认证实现:允许游客和登录用户访问同一路由

本文介绍如何在 Laravel 中使用 Sanctum 实现可选认证,允许同一路由既能被游客访问,也能被已登录用户访问。核心思路是检查请求中是否存在 Token,若存在则尝试通过 Sanctum 认证守卫获取用户并设置为当前用户,从而实现用户登录状态的判断。无需使用 auth:sanctum 中间件,即可根据请求头是否存在 Token 来判断用户是否已认证。

在某些场景下,我们需要创建一个可以被游客和已登录用户访问的路由。例如,一个展示文章详情的页面,游客可以浏览,登录用户可以查看更多信息或进行评论。使用 Laravel Sanctum,我们可以很容易地实现这种可选认证。

关键在于,我们不能简单地使用 auth:sanctum 中间件,因为这会强制要求所有访问者都必须提供有效的 API Token。相反,我们需要在路由逻辑中手动检查 Token 的存在性,并尝试进行认证。

以下是实现此功能的步骤:

  1. 移除 auth:sanctum 中间件。 确保路由定义中没有使用 auth:sanctum 中间件。

  2. 在路由处理函数中检查 Token。 使用 request()->bearerToken() 检查请求头中是否存在 Token。如果存在,则尝试使用 Auth::guard('sanctum')->user() 获取已认证的用户,并使用 Auth::setUser($user) 将其设置为当前用户。

下面是一个示例代码:

VALL-E
VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

VALL-E 142
查看详情 VALL-E
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;

Route::get('optional-auth', function () {
    if (request()->bearerToken() && $user = Auth::guard('sanctum')->user()) {
        Auth::setUser($user);
    }

    return Auth::check(); // false for guest users, true if valid token present
});
登录后复制

代码解释:

  • request()->bearerToken(): 尝试从请求头中获取 Bearer Token。如果存在,则返回 Token 字符串,否则返回 null。
  • Auth::guard('sanctum')->user(): 尝试使用 Sanctum 认证守卫获取已认证的用户。如果请求头中存在有效的 Token,则返回 User 对象,否则返回 null。
  • Auth::setUser($user): 将获取到的用户对象设置为当前用户。这使得我们可以在后续代码中使用 Auth::user() 获取到已登录的用户信息。
  • Auth::check(): 检查当前用户是否已认证。如果用户已登录,则返回 true,否则返回 false。

示例用法:

  • 无 Auth Header 的 GET 请求到 /optional-auth: Auth::check() 返回 false,表示用户未登录。
  • 带有效 Auth Header 的 GET 请求到 /optional-auth: Auth::check() 返回 true,表示用户已登录。Auth::user() 可以获取到已登录的用户信息。

注意事项:

  • 确保 Sanctum 已正确配置并安装。
  • 用户必须拥有有效的 API Token 才能通过认证。
  • 在实际应用中,可以根据 Auth::check() 的返回值来执行不同的逻辑,例如显示不同的内容或提供不同的功能。

总结:

通过在路由处理函数中手动检查 Token 的存在性并进行认证,我们可以轻松实现 Laravel Sanctum 的可选认证。这使得我们可以创建灵活的 API 接口,允许游客和已登录用户访问相同的路由,并根据用户的认证状态提供不同的体验。这种方法避免了强制使用 auth:sanctum 中间件带来的限制,提供了更大的灵活性和控制权。

以上就是Laravel Sanctum 可选认证实现:允许游客和登录用户访问同一路由的详细内容,更多请关注php中文网其它相关文章!

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号