月影飞雪 2024-07-29 11:31 采纳率: 100%
浏览 6
已结题

laravel/sanctum token 如何传值

我在后端装了 我的laravel 是10. 安装 laravel/sanctum

img

img

我的前端是 nuxt3 api/user/list 获取用户列表 如何传值 token

那个传的值 是什么 怎么传

api 传值 是这样的

img

结果出错

{message: "CSRF token mismatch.", exception: "Symfony\Component\HttpKernel\Exception\HttpException",…}
exception: "Symfony\Component\HttpKernel\Exception\HttpException"
file: "F:\phpstudy_pro\WWW\miao-yan\vendor\laravel\framework\src\Illuminate\https://img-mid.csdnimg.cn/release/static/image/mid/ask/0c7ad8c6a6c64a71a694f2f43c77416e.png "#left")
\Foundation\Exceptions\Handler.php"
line: 492
message: "CSRF token mismatch."
trace: [{,…},…]

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-07-29 11:31
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    您好!根据您提供的代码和遇到的问题,我将为您提供一个详细的解决方案。

    问题分析

    您在使用 Laravel Sanctum 进行 API 开发时遇到了 CSRF token mismatch 的错误。这通常是因为 Laravel 的 CSRF 保护机制在没有正确传递 CSRF token 的情况下触发的。

    解决方案

    1. 在 Laravel 中禁用 CSRF 保护

      • 由于您使用的是 Sanctum,它主要用于 SPA 或移动应用,不需要传统的 CSRF token。您可以在 Sanctum 的配置中禁用 CSRF 保护。
    2. 修改中间件配置

      • VerifyCsrfToken 中间件中,将 Sanctum 路由排除在外。
    // app/Http/Middleware/VerifyCsrfToken.php
    
    protected $except = [
        'api/*', // 假设您的 API 路由前缀是 api
    ];
    
    1. 前端请求调整
      • 确保前端在发起请求时携带了 Sanctum token。根据您提供的前端代码,需要调整请求头以包含 Authorization。
    // 使用 Nuxt3 和 Pinia 存储
    import { useAdminUserStore } from 'path/to/your/store';
    import httpRequest from 'path/to/your/httpRequest'; // 假设 httpRequest 是您的 HTTP 请求库
    
    export async function user_list(params) {
      const adminUserStore = useAdminUserStore();
      let token = adminUserStore.token;
    
      let headers = {
        'Authorization': `Bearer ${token}`
      };
    
      try {
        const response = await httpRequest.post('/api/admin/user_list', params, { headers });
        return response.data;
      } catch (error) {
        console.error('Error fetching user list:', error);
        throw error;
      }
    }
    
    1. 后端路由确保使用 Sanctum

      • 确保您的后端路由已经配置了 Sanctum 中间件,并且正确处理了 token。
    2. 示例输入输出

      • 示例输入:前端发起请求 { params: { /* 用户列表查询参数 */ } }
      • 示例输出:后端返回用户列表数据,例如 [{ id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' }]

    注意事项

    • 确保您的前端和后端都正确配置了 Sanctum。
    • 检查您的 Sanctum 配置是否允许跨域请求,因为您的前端可能是在不同的域名下运行。

    通过上述步骤,您应该能够解决 CSRF token mismatch 的问题,并成功通过 Sanctum 进行 API 认证。如果您在实施过程中遇到任何问题,可以进一步提供详细信息,以便获得更具体的帮助。

    希望这些信息对您有所帮助!如果您需要进一步的帮助,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见