在 Laravel 中使用无需身份验证的 api 路由

Posted

技术标签:

【中文标题】在 Laravel 中使用无需身份验证的 api 路由【英文标题】:Using api route without authentication in Laravel 【发布时间】:2020-11-26 14:31:48 【问题描述】:

我想简单地从控制器返回一些 JSON 数据,因此我想使用 api 路由。

MyController.php

public function data()

    //return json string

该控制器应该被 api 和 web 路由使用,这取决于我的需要。

api.php:

Route::get('data', 'MyController@data');

当我访问路径:/api/data 时,它会将我重定向到 /home

但是,当我将路线更改为以下路线时,它可以工作:

Route::get('data', function() 
    //return json string
);

我不确定它是否与身份验证有关。如您所见,我没有将任何中间件绑定到我的路由。

这里似乎有什么问题?

【问题讨论】:

您如何尝试通过浏览器或 Postman 之类的工具访问该路线? 我只是想从浏览器访问它:http://localhost/api/data 你的构造函数中有中间件吗? 你指的是哪个构造函数? php artisan route:list --path=api 的输出是什么,您的/data 路由在middleware 列中是否包含api 以外的任何内容? 【参考方案1】:

如果您的控制器中定义了中间件,请执行此操作

$this->middleware('auth', ['except' => ['yourMethodName']]);

【讨论】:

在哪里可以找到控制器中定义的中间件? 它应该在 _contruct() 构造函数中。像这样的公共函数 __construct() 哦,对了。我现在看到了。我觉得很愚蠢,以前没有注意到它。非常感谢!

以上是关于在 Laravel 中使用无需身份验证的 api 路由的主要内容,如果未能解决你的问题,请参考以下文章

使用身份验证护照系统覆盖 laravel 中 apis url 的身份验证重定向

Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页

在 laravel 中使用 REST API 的最佳身份验证方法是啥?

如何在 laravel 中进行前端 api 身份验证

Laravel 5.3 Passport API 在 Postman 中使用个人访问令牌未经身份验证

如何使用 API 中间件在 Laravel 中测试 PHPUnit 一个经过身份验证的用户?