【问题标题】:using GET in Laravel API routes在 Laravel API 路由中使用 GET
【发布时间】:2019-02-19 01:17:54
【问题描述】:

我正在尝试设置 Laravel API,但不知何故,每次我尝试使用 get 时都会收到以下错误: Session store not set on request.

当我将它放在 (api) 中间件之外时它可以工作,但在这种情况下不需要身份验证。 使用 post 可以完美运行,但不知何故,当我使用 get 时,我不断收到错误。

这是我在 routes/api.php 中的内容:

Route::middleware('auth:api')->group(function () {
    Route::get('/test', function (Request $request) {
        return 'test';
    });
});

PHP 版本:7.2.9

Laravel 版本:5.6.17

宅基地版本:6.3.0

这特别是在 auth:api 中间件中,这使得它不同于

Laravel - Session store not set on request

【问题讨论】:

  • @RonS 这个问题与 API 路由无关
  • 您的 OP 并非特定于 POST 请求。
  • 只要完整阅读我的问题,你就会发现它略有不同,所以不要将我的问题标记为重复,你应该再次阅读
  • 如果您能阅读我回答的第二条评论,您就会找到解决方案。

标签: php laravel api


【解决方案1】:

如果您需要会话状态、CSRF 保护等,请使用 Web 中间件...

Route::group(['middleware' => ['web']], function () {
    // your routes here
});

【讨论】:

  • 问题在于不再需要身份验证
  • 您没有设置 MiddleWare 'Illuminate\Session\Middleware\StartSession',这可能是导致此错误的原因。
  • 添加身份验证 add 'auth:api' 到中间件
  • @PaulRoefs 您说“不再需要身份验证”。
  • 不,我说您的代码不需要它,这意味着您无需身份验证即可访问该页面。这不是你想要的 API。
【解决方案2】:

我发现我必须在我的 App\Kernel.php 中的 $middlewareGroups 中包含 StartSession 解决了我的问题

'api' => [
    \Illuminate\Session\Middleware\StartSession::class,
    'throttle:60,1',
    'bindings',
],

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2019-04-28
    • 2021-11-21
    • 2021-12-26
    • 2021-07-06
    • 1970-01-01
    • 2020-07-23
    • 2019-09-20
    相关资源
    最近更新 更多