Laravel护照-如何通过web应用程序登录


Laravel Passport - How to login via webapp?

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

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

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

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

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

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

如果你想让你的登录表单驻留在app1.com,你唯一的选择是密码授予流- app1.com将获得用户凭据,并使一个POST请求oauth/令牌在maindomain.com试图获得访问令牌。这个POST请求可能发生在前端或后端(更安全-客户端密码将被隐藏),这取决于你。

否则,听起来您的授权码流已经启动并运行了。你可以一直将用户重定向到maindomain.com (Facebook和大多数其他OAuth2提供商选择这种方式),使用登录表单在那里,然后重定向回来并根据授权代码获取访问令牌。将该代码保存在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.php中设置受保护的API端点,并在需要时使用令牌作用域来进一步保护API端点:)