Laravel Passport - 如何通过webapp登录?

时间:2016-10-12 18:31:18

标签: php laravel laravel-5 laravel-5.3 laravel-passport

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试观看泰勒(laravel的创造者)观看此视频,以便开始:

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

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

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

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

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

相关问题