LaravelAPI如何实现登录_Laravel登录接口与Token返回【教程】
用 Sanctum 实现登录接口最轻量,核心是查用户→校验密码→发 token;Auth::attempt() 不适用 API 场景,因其仅返回布尔值且依赖 session,需改用 Hash::check() 显式验证,再调用 $user->createToken() 返回 plainTextToken。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
在 Lara vel 中构建 API 登录接口,Sanctum 通常是那个最轻量、最贴合场景的选择。它直接返回 token 的流程非常清晰。至于 Passport,除非你的项目确实需要完整的 OAuth2 流程,否则完全可以先放一边。
为什么不用 Auth::attempt() 直接返回 token
很多开发者踩的第一个坑,就是用了 Auth::attempt() 之后发现无从下手——它只返回一个布尔值,根本不生成 token。这其实不怪它,因为 Lara vel 传统的认证系统是为 Web 表单登录设计的,依赖 session 和 cookie。这套机制和纯 API 场景下使用的 Authorization: Bearer 头,从根子上就是两码事。
- 关键点在于,
Auth::attempt()成功后,并不会自动创建 API token,也不会返回任何能给前端直接使用的凭证。 - 如果你想手动调用
$user->createToken(),必须确保用户已经通过了认证。否则,岂不是给任意邮箱密码组合都能创建 token? - 如果跳过密码校验直接去 createToken,那就等于完全绕过了安全验证,会留下严重的安全漏洞。
Sanctum 登录接口怎么写才不踩坑
核心逻辑说起来就三步:查用户、校验密码、发放 token。但这里的顺序和异常处理,直接决定了接口能否抵御重放攻击或密码爆破。
- 第一步,先用
User::where('email', $request->email)->first()把用户查出来。这里不建议用Auth::attempt()包裹整个流程,因为它在失败时会触发 Lara vel 默认的“登录失败锁定”机制,这对 API 来说并不友好。 - 用户存在?好,接下来用
Hash::check($request->password, $user->password)进行显式的密码比对。如果失败,直接返回401 Unauthorized响应。 - 密码也对了,这时候才调用
$user->createToken('api-token')。注意,返回给前端的是$token->plainTextToken,而不是$token->token这个哈希值。 - 还有一个小细节:务必检查
config/auth.php里guards.api的 driver 是否设置为sanctum。否则,后续的认证中间件可能会静默失败,让你排查半天。
POST /login 接口的请求体和响应要严格对齐
接口契约必须清晰。前端传过来的字段名、后端返回的状态码和响应结构,错一个都可能让调用方反复抓包调试。
- 接收字段最好固定为
email和password。别自己发明username或passwd——Sanctum可不会帮你做字段映射。 - 成功响应状态码用
200,响应体里必须包含token字段,格式一目了然:{"token": "1|abc..."} - 失败一律返回
401。这里要区分清楚:422通常用于表单验证错误,而密码错误是认证失败,不是服务器内部错误,所以也别用500。 - 响应里不需要塞入完整的
user对象。token 本身不携带用户信息,后续请求通过auth:sanctum中间件来解析 token 并自动加载对应用户。
最后,还有一个容易忽略的实践细节:Sanctum 默认创建的 token 是永不过期的,注销需要手动调用 $user->tokens()->delete()。前端拿到 token 后,需要将其存入 localStorage 或内存变量中,不能依赖 cookie,否则在跨域请求时可能无法携带出去。
相关攻略
Lara vel辅助函数默认全局可用,无需导入;route()必须传数组参数;data_get()安全访问嵌套数据。自定义函数需通过composer autoload files注册,不可用use调用。 说起Lara vel的辅助函数,与其把它当成一个需要“学习使用”的工具,不如说它更像一位默默无闻
用 Sanctum 实现登录接口最轻量,核心是查用户→校验密码→发 token;Auth::attempt() 不适用 API 场景,因其仅返回布尔值且依赖 session,需改用 Hash::check() 显式验证,再调用 $user->createToken() 返回 plainTextTok
Lara vel缓存清理:从命令到文件,一次说透 说起清理Lara vel缓存,不少开发者第一反应就是敲下php artisan cache:clear。但执行完一看,storage目录纹丝不动,页面逻辑还是旧的,问题到底出在哪儿?今天咱们就把这事儿掰开揉碎了讲清楚。 php artisan cac
Blade 组件:从“模板片段”到“封装单元”的认知升级 在Lara vel开发中,很多人对Blade组件的理解还停留在“可复用的HTML片段”层面。这其实是个误区。真正的Blade组件,是一个自带作用域、支持参数传递、能够灵活嵌套的完整封装单元。如果只是简单地用 @include 指令引入一段代码
在 Lara vel 中新增自定义日志通道需在 config logging php 中配置驱动(如 single daily)、路径、格式器等,通道名须小写无点号,配置后执行 php artisan config:clear,并通过 Log::channel( xxx ) 显式调用,注意权限、le
热门专题
热门推荐
一、财务系统更换:一场不容有失的“心脏手术” 如果把企业比作一个生命体,那么财务系统就是它的“心脏”。这颗“心脏”一旦老化,更换就成了必须面对的课题。但这绝非一次简单的软件升级,而是一场精密、复杂、牵一发而动全身的“外科手术”。数据显示,超过70%的ERP(企业资源计划)项目实施未能完全达到预期,问
在企业数字化转型的浪潮中,模拟人工点击软件:从效率工具到智能伙伴 企业数字化转型的路上,绕不开一个话题:如何把那些重复、枯燥的电脑操作交给机器?模拟人工点击软件,正是因此而成为了提升效率、降低成本的得力助手。那么,市面上的这类软件到底有哪些?答案其实很清晰。它们大致可以归为三类:基础按键脚本、传统R
一、核心结论:AI智能体是通往AGI的必经之路 时间来到2026年,AI智能体这个词儿,早就跳出了PPT和实验室的范畴。它不再是飘在天上的技术概念,而是实实在在地成了驱动全球数字化转型的引擎。和那些只能一问一答的传统对话式AI不同,如今的AI智能体(Agent)本事可大多了:它们能自己规划任务步骤、
一、核心结论:AI智能体交互的“桥梁”是行动层 在AI智能体的标准架构里,它与外部系统打交道,关键靠的是“行动层”。可以这么理解:感知层是Agent的五官,决策层是它的大脑,而行动层,就是那双真正去执行和操作的手。这一层专门负责把大脑产出的抽象指令,“翻译”成外部系统能懂的语言,无论是调用一个API
一、核心结论:AI人设是智能体的“灵魂” 在构建AI应用时,一个核心问题摆在我们面前:如何写好AI智能体的人设描述?这个问题的答案,直接决定了智能体输出的专业度与用户端的信任感。业界实践表明,一个优秀的人设描述,离不开一个叫做RBGT的模型框架,它涵盖了角色、背景、目标和语气四个黄金维度。有研究数据





