从前端客户端访问Laravel Passport中的API /数据

时间:2019-08-21 23:56:08

标签: php laravel laravel-5 access-token

我正在创建一个利基社区网站+论坛,用户可以在其中注册,登录,创建帖子并互相关注。

我的技术堆栈由Laravel(使用Laravel护照)中的后端API和Vue.js / Nuxt中的前端组成。

我可以通过邮递员访问所有API,在其中我调用http://localhost:8000/oauth/token来请求令牌 https://laravel.com/docs/master/passport#requesting-password-grant-tokens 然后,我使用提供的access_token / bearer令牌调用API,例如 http://127.0.0.1:8000/api/v1/tags

我的问题是,我是否需要完整的oauth流程-我的前端将无限期需要访问Laravel中的后端API /数据,但是客户端如何在不经过2次访问的情况下访问数据与每个用户会话进行握手,这似乎有些过分? 我是否需要Password Grant TokenImplicit Grant TokenPersonal Access Token等其他内容? 如何在将前端javascript客户端列入“白名单”的同时,还可以保护我的数据免遭滥用?另外,如何使用Passport对不同类型的API请求进行身份验证?

Password Grant令牌是否适合所有这些。...我在API中提供3种广泛的数据类别:

  1. 类型1:完全开放,无身份验证,不与用户绑定:示例:

GET /api/tags - API that gets all tags, this should not require authentication + authorization. This API would be used to display all tags on the /tags page, for example.

  1. 类型2:仅管理员端点:完全关闭,任何人都不能使用,但对我(管理员)而言。例子:
POST / PATCH / DELETE /api/tags - APIs that create / update / delete (global) tags, these should only be accessible by me (Admin)
GET /api/users - should only be accessible by me (Admin)
  1. 类型3:特定于用户的终结点,仅适用于已登录用户(当然还有管理员)。例子:

POST / PATCH / DELETE /api/user/1/settings - APIs that create / update / delete (user-specific) data, these should only be accessible by a logged-in user, and by me (Admin).

密码授予令牌是否适合所有这些?

1 个答案:

答案 0 :(得分:0)

隐式授予通常是API驱动/ SPA的最佳方法。

由于SPA是公共客户端,因此它无法安全地存储诸如“客户端密钥”之类的信息。使用隐式流可以通过返回令牌来简化身份验证,而无需引入任何不必要的附加步骤。

您提供给隐式流的Laravel Passport链接也进行了详细描述,该流类型最适合在JavaScript前端应用中使用:https://laravel.com/docs/5.8/passport#implicit-grant-tokens

希望这会有所帮助!