8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Laravel Sanctum 用于不同域上的 API 身份验证

Arian Segui Garcia 2月前

128 0

我正在 Laravel 中验证 API 请求,它在本地运行良好,但是当我同时部署两者(Firebase 上的 React,不同域上的 Laravel)时,API 身份验证停止工作。这...

我正在 Laravel 中验证 API 请求,并且它在本地运行良好,但是当我同时部署两者(Firebase 上的 React,不同域上的 Laravel)时,API 身份验证停止工作。

这是 app/Http/Kernel.php

protected $middlewareGroups = [
    'api' => [
        \Fruitcake\Cors\HandleCors::class,
        // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
];

这是 config/cors.php

    'paths' => ['api/*', 'sanctum/csrf-cookie'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['http://localhost:3000', 'https://example.web.app'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,

当我使用 axios 从 React 发出请求时出现 401 错误。

我向 ChatGPT 询问并搜索了很多,但没有用。

我想要向 Laravel 发出请求并使用不同域的 sanctum 对其进行身份验证。

///////////////// 更新 ///////////////////

我切换到 JWT 身份验证,因为 @jurandou 提到它 laravel/sanctum 不支持来自不同域的 API 授权。

帖子版权声明 1、本帖标题:Laravel Sanctum 用于不同域上的 API 身份验证
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Arian Segui Garcia在本站《api》版块原创发布, 转载请注明出处!
最新回复 (0)
  • TL;DR我的突变定义中的一个特定参数现在配置为 String, required: true,这使其成为非空的强制字符串参数。正在将其更改为 String, required: :nullable

    TL;DR 我的突变定义中的一个特定参数现在配置为 String, required: true 使其成为非空的强制字符串参数。将其更改为被 String, required: :nullable 视为重大更改,并且可能会破坏 API 的客户端?


    我有一个使用 graphql 的 Ruby on rails 后端。这是定义的突变之一(仅仅是一个例子):

    class Mutations::UpdatePerson < Mutations::BaseMutation
      argument :id, Integer, "The person's unique identifier.", required: true
      argument :name, String, "The new name of the person.", required: true
    
      type Types::PersonType
    end
    

    此 API 的客户端可能对此变异有一个调用定义,如下所示:

    mutation change_someone($new_name: String!){
      update_person(id:118607869, name: $new_name) {
        id
        name
      }
    }
    

    我想使该 name 参数非强制性。我仍然希望突变调用要求通过其名称 ( name ) 指定变量,但也希望明确接受空值。因此允许这样做: update_person(id:118607869, name: null) ,但不允许这样做: update_person(id:118607869) .

    阅读完此处的 文档 ,我通过如下方式更改突变定义设法实现了此行为:

    class Mutations::UpdatePerson < Mutations::BaseMutation
      argument :id, Integer, "The person's unique identifier.", required: true
      argument :name, String, "The new name of the person.", required: :nullable
    
      type Types::PersonType
    end
    

    这是按预期工作的,但我的问题是 - 对于已经定义了具有参数和签名的请求的 API 使用者(如上所述),这是否有可能实际上破坏客户端代码?


    根据 graphql 规范:

    随着 GraphQL 类型系统架构不断演变,添加新类型和新字段,之前有效的请求可能会在之后变得无效。任何可能导致之前有效的请求变得无效的更改都被视为重大更改。

    我尝试使用 graphql API 游乐场进行各种声明变体,但无法使其中断(即因 \'编译\' 错误而变为红色)。在我看来,扩大可能的输入值列表不应被视为重大更改,但我只是想 100% 确定。(将满足于 99.999%)

返回
作者最近主题: