Laravel Passport - 如何通过 webapp 登录?

Laravel Passport - How to login via webapp?

我设置了一个中央应用程序(我们称之为 maindomain.com),我在其中设置了 Passport。此站点将是用户注册以访问我创建的所有其他应用程序的地方。

为了测试它,我按照 Matt Stauffer's blog post 创建了一个客户端应用程序,它将使用存储在 maindomain.com 上的用户数据,我们称之为 app1.com.

我可以确认我的回调和诸如此类的东西工作正常。当您转到 app1.com/login(按照我的路线)时,它会重定向到 maindomain.com 并允许您授权 app1.com 使用您的登录详细信息 - 漂亮。

根据 Matt 的 post,现在它将令牌打印到屏幕上。我需要更改它以便将其保存到数据库中 - 我假设我应该只在用户的 table 上创建一个列并将其存储在那里?

我已经测试了令牌并且可以使用 Postman 访问 API 路由。但是,因为目前我正在创建都需要使用这个集中式用户系统的 Web 应用程序,所以我不确定如何使用登录表单来授权用户并允许他们访问他们的仪表板。

如果用户正在登录 app1.com,我是否向 maindomain.com 发送 POST 请求?这不会成为 CSRF 的问题吗?我已经阅读了文档,但由于这是我第一次尝试 Oauth2,所以我很困惑。

如果您希望登录表单位于 app1.com,您唯一的选择是密码授予流程 - app1.com 将获取用户凭据并向 [=16] 发出 POST 请求=] 在 maindomain.com 上尝试获取访问令牌。此 POST 请求可能发生在前端或后端(更安全 - 客户端密码将被隐藏),由您决定。

否则,听起来您的授权码流程已经启动并且 运行。您可以继续将用户重定向到 maindomain.com(Facebook 和大多数其他 OAuth2 提供商选择这种方式),使用登录表单 there,然后重定向回来并根据授权码。将该代码保存在您的 app1.com 数据库中,并允许用户使用它访问仪表板。当它过期时 - 再次开始流程。

尝试观看 Taylor(laravel 的创建者)的这个视频开始:

https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/13

我为这两个项目创建了 repos,并确认它们正常工作:

API 服务器: https://github.com/jeremykenedy/laravel-passport

API 消费者: https://github.com/jeremykenedy/laravel-consumer

尝试在路由文件中创建受保护的 API 端点 api.php 并在需要时使用令牌范围来进一步保护 API 端点:)