首页 > 解决方案 > 在 Laravel 中保护单个 API GET 请求

问题描述

如果这将是一个愚蠢的问题,请提前道歉。

我的情况

我有一个简单的网络应用程序,用户必须先登录才能访问任何其他页面。用户登录后,他会被重定向到仪表板,该仪表板每分钟都会从我的应用程序中向 API 链接发出 axios ajax GET 请求。

所以为了澄清,页面'/'每分钟都会对'/api/example'进行javascript调用。

我的问题

我是 API 的新手,我需要这个链接只能被我的应用程序中的登录用户访问。我错误地将我的时间投入到 Laravel Passport 上,只是意识到它可能有点“矫枉过正”并且完全没有必要,因为我不需要其他应用程序来访问该 API 链接。它只是作为一种数据库调用方法来用数据填充仪表板。

我的问题

由于这只是一个具有单个 API GET url 的简单站点,我如何才能正确保护该链接,以便它只能由登录用户访问?JWT 会是更合适的方法吗?

谢谢你。

标签: ajaxlaravelapi

解决方案


如果您的路线在,api.php那么将您的路线写在

 Route::middleware('auth:api')->group(function() { 
    //your protected routes here 
 });

如果您的路线在 web.php 中,则:

Route::middleware('auth')->group(function() { 
    //your protected routes here 
 });

在登录之前,用户将无法访问用auth or auth:api中间件编写的路由


推荐阅读