问题标签 [laravel-passport]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2274 浏览

php - 使用 laravel 护照从 api 路由注册新用户

我已经安装了laravel 5.3passport pakage 。我一步一步地按照文档进行操作,我可以使用POST /oauth/token带有以下参数的以下路线

  1. 用户名
  2. 密码
  3. client_secret
  4. 授予类型
  5. client_id

我得到以下回复

然后我要求GET /api/user

带有以下标题

  1. Authorization = "这里的不记名访问令牌"
  2. 接受 = 应用程序/json(可选)

这很好,所以所有的api。

我遇到的问题是我在第一个请求中验证并输入了他的用户名和密码并将访问令牌返回给我的用户是我从 laravel web view /register 创建的用户

如何从 api 路由文件创建新用户或注册新用户

喜欢POST /api/register

用户第一次需要注册之后才能进行身份验证。

我是否应该在没有 oauth 的情况下创建这条路线来注册,然后如果成功注册他要求POST /oauth/token进行身份验证或什么?我错过了什么吗?

更新clent_secret所有用户请求中保持不变或者每个用户应该有不同的 clent_secret 是否正确,如果需要对用户进行身份验证,如何创建 aclent 秘密?

0 投票
1 回答
945 浏览

laravel - 如何在 Laravel 5.3 中修改来自 Passport OAuth 的错误消息?

我将 Laravel 5.3 用于移动应用程序连接到的 REST 服务器。我已经为大多数 Laravel 错误定制了异常处理程序,并且按照我喜欢的方式工作。

然而,OAuth 错误又变得丑陋了。例子:

显然,我不是唯一一个对带有下划线的错误代码感到困扰的人——我只有少数 beta 测试人员,他们已经将此报告为“错误”。

Passport 似乎绕过了常规的错误处理程序,League\OAuth2\Server\Exception\OAuthServerException而是通过了。这些丑陋的错误消息被硬编码到该文件中。

我已经认真尝试了十几种扩展/覆盖 OAuthServerException 的方法,但我似乎无法让它发挥作用。

0 投票
1 回答
1328 浏览

laravel - Laravel 5.3 Passport oauth - 单客户端多访问令牌 - Alexa

我是 oAuth 的新手,但这是我需要为 Alexa 家庭套件技能集成的东西。

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system

我正在为此苦苦挣扎,但我知道我需要使用授权码授予。

在谷歌搜索之后,我想我会尝试使用 Laravel Passport 进行设置(我计划构建一个网络平台,所以我不将 Laravel 纯粹用于 oAuth) - https://laracasts.com/series/whats-新的 laravel-5-3/episodes/13

我从未使用过 Laravel(PHP 新手),但我花了几个小时阅读 Laracast 指南,所以我有一个基本的了解。

我能够使用 Laravel Passport 设置一个 oAuth 服务器,创建一个客户端,使用我在 Alexa 应用程序上配置的客户端 ID、Secret 和 Auth URL,并使 Alexa 帐户链接正常工作。伟大的。

问题是,目前只有一个用户,我。在 Alexa 应用程序中,您只能配置一个客户端 ID 和密钥,而我链接用户的唯一方法是通过 Alexa 在每个操作/请求中传递的访问令牌。

查看 oAuth 表,似乎访问令牌(不再有效:​​))链接到 user_id:

+-------------------------------------------------- ---------------------------------+---------+------ -----+------+--------+---------+------ ---+----------+----------+ | 编号 | 用户 ID | 客户 ID | 姓名 | 范围 | 撤销| created_at | 更新时间 | 过期_at | +-------------------------------------------------- ---------------------------------+---------+------ -----+------+--------+---------+------ ---+----------+----------+ | b96dbbbe1f52386bc098dcc106309504a1e546ec05d2a5cf8d37b7460e4ba84ec95e7ff2c0a2d037 | 1 | 9 | 空 | [] | 0 | 2017-01-16 08:28:18 | 2017-01-16 08:28:18 | 2018-01-16 08:28: 18 | +-------------------------------------------------- ---------------------------------+---------+------ -----+------+--------+---------+------ ---+----------+----------+

在 Laravel 中注册/创建用户很简单,但目前每个用户只能创建自己的客户端,这在此处不起作用,因为 Alexa 被配置为使用单个客户端。

我需要找到一种方法,以便:

1 - 用户可以通过 Alexa 应用程序使用他们的凭据登录到我的 Laravel 应用程序(Alexa 将传递 state、client_id、response_type、scope 和 redirect_uri 作为查询字符串)

2 - 如果用户通过身份验证,我的 Laravel 应用程序将生成一个授权码并将其传递回 Alexa,包括状态

3 - Alexa 使用该代码然后请求访问令牌和刷新令牌

4 - 生成访问令牌时,它链接到该用户(客户)的 user_id,而不是创建客户端(我)的 user_id

5 - 刷新访问令牌时,再次应用第 4 步。

我希望以上内容是有道理的,因为我真的很难把它用语言表达出来。我对 oAuth 的理解也完全有可能搞砸了。

如果我能完成上述步骤,我相信我可以轻松创建一个 API/方法,让我可以使用 SQL 查询来确定将访问令牌分配给哪个用户。

我还应该能够锻炼如何显示 oauth vue 组件,以便只有管理员用户能够查看/使用它们来创建客户端。

0 投票
0 回答
367 浏览

php - Codeception Lumen API - '未定义身份验证驱动程序 [api]' 在单个测试中发出多个请求时

我有一个使用 Lumen 5.3 构建的 API。对于身份验证,我使用 Laravel Passport(通过dusterio/lumen-passport包移植到 Lumen)。

一切都在 Postman 中运行良好,并且所有测试都可以通过一个请求顺利通过。但是,一旦我进行了具有多个请求的测试,我就会收到错误消息:“未定义身份验证驱动程序 [api]”。守卫是在我的身份验证配置中定义的,正如我所说,在这个测试用例之外工作得很好。

示例测试:

如果我删除最后 3 行(来自第 2 个 sendPUT 请求的所有内容),则测试通过,但是一旦包含,我就会收到错误。

有任何想法吗?

0 投票
2 回答
886 浏览

laravel - Laravel Passport 使用自己的 API 失败

我正在用 Vue 构建一个 SPA。我的前端和后端(Laravel)在同一个代码库中。我想通过 Laravel Passport Middleware CreateFreshApiToken访问我的 API(在我的后端)。我正在通过web.php在我的AuthController中接近我的登录方法。

我的问题: 一旦我通过登录方法成功登录,我希望此时 Passport 创建laravel_token cookie。不是这种情况。cookie 是在页面刷新后创建的。但正如我所说,我正在构建一个 SPA,这就是我不想刷新页面的原因。

我想要什么: 我想通过我的登录方法登录,然后使用 Passport CreateFreshApiToken中间件。之后,我想使用(刚刚在中间件中创建的)laravel_token cookie,以便我可以在 SPA 的登录部分中正确安全地与我自己的 API 对话。

更多信息:

内核.php

AuthController.php

登录.vue

出了什么问题?这个:

CreateFreshApiToken.php

我认为我想要实现的目标是可能的吗?如果是,如何?

0 投票
4 回答
79358 浏览

php - 在 laravel 护照客户端应用程序中使用访问令牌获取用户数据

我已经使用Laravel Passport 文档成功创建了server.appclient.app。一切都按预期工作。

client.app 路由:

默认情况下,这条路线返回access_token,我可以用它做任何我想做的事情。

要求:

回报:

问题:

如何使用client.app中给定的 access_token向server.app发出正确的请求,以获取例如用户电子邮件

我应该使用:http://server.app/api/user请求获取数据吗?如果是,我该怎么做?如果可能,请写一个代码。

感谢您的任何回答。

0 投票
3 回答
3603 浏览

php - Laravel Passport oauth/authorize 返回基本身份验证

我尝试在 Laravel Passport 上创建 oauth2 服务器并从第三方应用程序对其进行测试。Oauth 服务器使用 Laravel,客户端使用 Yii 框架。我无法修改客户端前端,我创建了一个路由 /api/oauth/login 将请求转发到 oauth 服务器:

此方法处理 /api/oauth/callback 路由:

一切都像在文档中一样实现。但是当我打开 /api/oauth/login 时,将重定向转发到 oauth-server.loc/oauth/authorize?{params} 并看到一个 http 基本身份验证窗口。什么?Nginx 没有这样的设置。有人知道我做错了什么吗?请帮帮我。

0 投票
2 回答
2265 浏览

php - 使用 curl 或 guzzle 的 laravel 护照 oauth 功能

我在 api 路由文件中有这条路由

注册功能是

现在,当我将发布请求发送到创建用户的 url 时,请求继续加载并且没有响应,并且整个应用程序一直挂起,直到我关闭 IDE - phpstorm - 我/oauth/token从邮递员向同一个 url 发送相同的参数,它工作正常. 任何帮助或任何人告诉我我错过了什么?

0 投票
2 回答
3054 浏览

facebook - Laravel Passport 和 Ionic2 Facebook-登录

我正在开发一个移动应用程序,它应该对自己的 laravel 后端进行 API 调用。

前端: Ionic 2 + Angular2

后端: Laravel 5.3 + Laraval Passport + MySQL

在用户可以使用密码授权(用户名+密码)登录。

现在我想通过 Facebook 提供登录。

我已经在应用程序中实现了使用 Facebook 按钮登录。这工作正常。我从 Facebook API 获取个人资料信息:id、email、name

现在这个用户(没有来自我们服务器的电子邮件+密码组合)应该能够对我们的 Laravel 服务器进行 API 调用,并且应该链接到 laravel 后端后面 MySQL 数据库的用户表中的用户。使用 Facebook 登录的用户不需要任何用户名或密码即可登录。只是脸书。

我想在数据库中为每个 facebook 用户生成一个新用户(只需使用 facebook_id 列)。但是如何给这样的用户一个access_token呢?

仅接受 Facebook ID,在数据库中匹配此(或创建新)用户并创建 access_token 将非常不安全,因为 Facebook ID 是公开的......

0 投票
2 回答
1225 浏览

laravel - Laravel 5.3 Web 应用程序的授权策略/网关使用自己的 API w/ Passport

使用 Laravel 5.3,我设置了一个使用自己的 API 的网络应用程序。Passport 已成功处理身份验证。Web 应用在路由和模型策略中使用 auth 中间件进行授权。API 路由使用默认的 'auth:api' 令牌保护来控制访问。

我想在应用程序/策略中使用相同的策略来进行 API 授权以及网络身份验证,但我不明白如何。诸如$this->authorize('view', $model)不工作的电话。我想我需要以Auth::guard('api')->user()某种方式将用户传递给策略?

任何帮助,将不胜感激!

更新:得到它的工作。

似乎即使对于 API 调用,Laravel 仍在使用来自 web 警卫的用户来检查策略。此用户未定义 API 调用。所以我需要告诉 Laravel 所有的 API 调用都应该使用 api 保护。

  1. Auth::shouldUse('api');在句柄函数中创建一个新的中间件。
  2. 将中间件分配给内核中的 api 部分。

Laravel 现在将对所有 API 请求使用 api 保护。像这样的调用$this->authorize('view', $model)将在 web 和 api 中工作。