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

Laravel 5.6 Passport:Ajax请求携Token获取用户详情方法问询

切换到Laravel Passport后,Ajax请求携带Token获取用户详情的正确姿势

嘿,很高兴看到你已经顺利切换到Laravel Passport并搞定了Token的创建与获取!针对你的问题,我来给你梳理清楚具体的做法:

要不要替换原来的api_token=somevalue方式?

答案是必须替换。Laravel自带的Token Guard用的是简单的api_token参数(不管是放在URL里还是请求头),而Passport遵循OAuth2标准,使用的是Bearer Token机制——这是Passport认证的标准方式,同时也能让你享受到Passport提供的令牌过期、刷新令牌、客户端认证等进阶功能。

Ajax请求如何正确携带Passport Token?

最推荐也是最安全的方式是将Token放在请求头里,具体步骤如下:

1. 请求头携带Bearer Token(推荐)

在Ajax请求的headers中添加Authorization字段,格式为Bearer {你的Token}。下面是两种常见的Ajax实现示例:

jQuery Ajax示例

// 假设你已经把获取到的Passport Token存在了localStorage里
const passportToken = localStorage.getItem('passport_token');

$.ajax({
    url: '/api/user', // 你的用户详情接口路由
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${passportToken}`,
        'Accept': 'application/json' // 确保后端返回JSON格式
    },
    success: function(user) {
        console.log('用户详情:', user);
        // 这里可以处理用户信息的渲染逻辑
    },
    error: function(xhr) {
        console.error('认证失败:', xhr.responseJSON?.message || '未知错误');
    }
});

原生Fetch API示例

const passportToken = localStorage.getItem('passport_token');

fetch('/api/user', {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${passportToken}`,
        'Accept': 'application/json'
    }
})
.then(response => {
    if (!response.ok) {
        throw new Error('认证失败或请求出错');
    }
    return response.json();
})
.then(user => {
    console.log('用户详情:', user);
})
.catch(error => {
    console.error('请求失败:', error.message);
});

2. URL参数携带Token(不推荐)

虽然Passport也支持将Token放在URL参数中(格式为?access_token={你的Token}),但这种方式并不安全——URL可能会被浏览器缓存、服务器日志记录或者通过Referer泄露,所以只建议在测试场景临时使用,生产环境一定要用请求头方式。

示例:

$.ajax({
    url: `/api/user?access_token=${passportToken}`,
    method: 'GET',
    // ...其他配置
});

后端路由配置注意事项

确保你的用户详情接口已经使用了Passport的auth:api中间件,这样后端才能正确解析Bearer Token并验证用户身份:

// routes/api.php
use Illuminate\Http\Request;

Route::middleware('auth:api')->get('/user', function (Request $request) {
    // 返回当前认证用户的详情
    return $request->user();
});

这样配置后,只要Ajax请求携带了有效的Bearer Token,就能成功获取到用户详情啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:59:36