在 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 的最佳身份验证方法是啥?