CreateFreshAPIToken 或个人访问令牌。 CreateFreshAPIToken 是否与 AJAX 一起使用?

CreateFreshAPIToken or Personal Access Token. And does CreateFreshAPIToken work with AJAX?

我正在制作一个基于 API 的 Web 应用程序。它将包含各种用户,如普通用户、具有用于更新、删除、显示内容的表格的网页的管理员。显然会有很多页面,访问权限将取决于用户范围。我很困惑并卡在了这一点上:

我是否应该在每次用户登录时生成具有范围的个人访问令牌,并使用它来检查用户组(是否具有权限)以授予对网页的访问权限和发出一些请求。

我应该为请求使用 CreateFreshApiToken 中间件吗?我应该只在登录时检查用户的组以授予他访问某些网页的权限。

我希望你明白我想说的。

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

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

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

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

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

个人访问令牌可以看作是 API 个密钥。 API 消费者可以使用此密钥通过您的 API 进行授权,而无需通过 OAuth2 流程。您必须创建从 JavaScript 应用程序到 API 的代理才能使用此令牌发出请求,这会很奇怪。