在Laravel应用程序中使用Vue组件使用特定端点的API

在Laravel应用程序中使用Vue组件使用特定端点的API,laravel,api-design,Laravel,Api Design,我已经浏览了一段时间,想找到一个可行的解决方案 我有一个Laravel应用程序,其中在API路径中有某些端点 我希望在不需要登录应用程序本身的情况下使用数据。如果有人能为我指引正确的方向,我将不胜感激。我已经查看了Passport,但是我不想在ajax调用中传递某些信息,如客户id或客户机密,因为它们很容易被看到 你不能两者兼得。您无法保护路由,然后在未进行身份验证的情况下调用它。如果您可以访问未经身份验证的文件,那么首先保护它就没有意义了。让你的生活更轻松,两次定义相同的路线。一旦进入中间件,

我已经浏览了一段时间,想找到一个可行的解决方案

我有一个Laravel应用程序,其中在API路径中有某些端点


我希望在不需要登录应用程序本身的情况下使用数据。如果有人能为我指引正确的方向,我将不胜感激。我已经查看了Passport,但是我不想在ajax调用中传递某些信息,如
客户id
客户机密
,因为它们很容易被看到

你不能两者兼得。您无法保护路由,然后在未进行身份验证的情况下调用它。如果您可以访问未经身份验证的文件,那么首先保护它就没有意义了。让你的生活更轻松,两次定义相同的路线。一旦进入中间件,一旦离开中间件

Route::get('link', 'LinkController@get');

Route::group(['middleware' => 'auth:api'], function(){
    Route::get('link', 'LinkController@get');
});

现在您既有受保护的路由,也有未受保护的路由。但是,正如我所说的,它实际上并不是不受保护的,因为任何人都可以访问它而无需身份验证。

以下是我对我所面临的问题的2美分处理方法。将来可能会有帮助

经过相当多的研究和了解JWT是如何工作的,顺便说一句,我还需要进一步研究才能完全理解它。然而,为了得到一个概述,我找不到一篇更好的文章来用简单的词来解释,除了

现在,一旦我了解了JWT是如何工作的,我就可以很容易地将我的头脑集中在整个流程上。下面是我如何处理的。当我为我的公司开发内部API时,我创建了一个中间件来检查对某些端点的请求是否来自白名单API,您可以从$request->API()轻松获得该API

然后我安装了tymondesigns在的优秀软件包。我按照安装过程生成了密钥。现在有趣的部分来了

我希望在不需要登录的情况下保护端点,因此我创建了自己的中间件,从users表中抓取某个用户,并从该用户对象创建JWT令牌

$user=App\user::whereEmail('email')->first() $token=JWTAuth::fromUser($user)

一旦我得到了令牌,我所需要做的就是调用我的端点,即/api/v1/users?令牌={generatedToken},瞧!!!一切都好。然而,我们也需要在一定时间后刷新令牌,这同样是软件包提供的两个中间件

jwt.auth和jwt.refresh

jwt.auth-midleware试图通过凭证使用authenticate方法创建令牌,因此我将其替换为我的中间件,在中间件中,我如上所述对用户进行身份验证,jwt.refresh令牌


如果你读了我提到的文章,然后读了维基软件包,这一切都是有意义的。干杯

如果您不想登录到应用程序以获得访问权限,请将端点公开。否则,如果您的路由被拒绝,您将不得不以某种方式获得访问令牌protected@EddyTheDove,这就是我想要理解的。我确实希望终点得到保护。。然而,与此同时,我应该能够称之为。只是想了解itI的正确做法,我知道应该公开端点,然后从那里获取数据。也许我的问题不够清楚。我想要实现的是,我能够以某种方式安全地到达端点,而如果最终用户浏览到该端点,那么它会将他/她重定向回指定的页面。所以,是否有可能使用唯一的令牌或信息从我的组件调用端点,我的端点然后检查该请求是否是内部的,并吐出所需的数据。我认为是这样的。只需从数据库复制您的令牌并手动将其添加到您的请求头中。就这样。