CreateFreshAPIToken或个人访问令牌。 CreateFreshAPIToken是否适用于AJAX?

时间:2017-06-09 10:12:19

标签: php laravel laravel-5.4 laravel-passport

我正在制作基于API的Web应用程序。它将包含各种用户,如普通用户,带有网页的管理员,其中包含用于更新,删除,显示内容的表格。显然会有很多页面,访问权限取决于用户的范围。我感到很困惑,并坚持认为:

每次用户登录时,我是否应该使用范围生成个人访问令牌,并使用它来检查用户组(如果有权限或不允许),以便访问网页和发出一些请求。

OR

我是否应该使用CreateFreshApiToken中间件进行请求,我应该在登录时检查用户的组,以便他访问某些网页。

我希望你理解我想说的话。

CreateFreshApiToken中间件将laravel_token cookie附加到传出响应中。如果我使用AJAX,那有用吗?如果没有,这是否意味着我将始终必须通过请求传递访问令牌?

1 个答案:

答案 0 :(得分:2)

我会选择第二种方案并使用CreateFreshApiToken中间件,因为范围在某种意义上从属于应用程序中的用户组/用户权限/用户角色。

例如,用户可以在登录到您的应用程序后拥有放置和查看订单的权限。但是,例如,使用您的API的移动应用程序的开发人员可能决定仅授予登录此应用程序权限的用户查看订单,即orders.view范围,而不是下订单的权限。将此与例如Google API进行比较。作为Gmail的用户,您有权阅读和删除电子邮件等。但是,当您开发使用Gmail API的应用时,您可以确定该应用仅需要并且仅询问用户所需的范围阅读电子邮件。

因此,在具有范围的Laravel应用程序中管理整个授权层非常薄。在大多数情况下,最好将应用程序的授权层(用户角色,权限等)与API的授权层(范围)分开。

CreateFreshApiToken中间件旨在使用JavaScript和AJAX来使用您的API。在登录后对Web路由发出第一个GET请求后,laravel_token将作为cookie附加到每个AJAX请求(La {/home的请求由Laravel Auth脚手架在登录后自动生成)。可以在Passport文档的这一部分中找到说明:https://laravel.com/docs/5.4/passport#consuming-your-api-with-javascript

个人访问令牌可以被视为API密钥。 API使用者可以使用此密钥通过API进行授权,而无需通过OAuth2流程。您必须从JavaScript应用程序创建一个代理到您的API以使用此令牌发出请求,这将非常奇怪。

相关问题