Symfony 这是在普通网页上使用RESTAPI+OAuth的正确方法吗?

Symfony 这是在普通网页上使用RESTAPI+OAuth的正确方法吗?,symfony,Symfony,首先,由于缺少文字,我使用了普通网页上的标题。请让我解释一下: 最近,我看到很多网站,比如shopify.com,充分利用了现代浏览器对html5推送状态和Ajax的支持。我看到他们不是提交表单,而是请求新页面,而是通过RESTAPI完成所有这些工作。在我看来,这是一种非常简洁的方法,因为它可以更快、更少地重新加载页面,并且还允许我们重用API代码 在这些场景中,用户像通常一样通过网站访问服务,但是他们与资源的交互由RESTAPI提供动力 随着我对文档的深入研究,这些API请求似乎应该是无状态的

首先,由于缺少文字,我使用了普通网页上的标题。请让我解释一下:

最近,我看到很多网站,比如shopify.com,充分利用了现代浏览器对html5推送状态和Ajax的支持。我看到他们不是提交表单,而是请求新页面,而是通过RESTAPI完成所有这些工作。在我看来,这是一种非常简洁的方法,因为它可以更快、更少地重新加载页面,并且还允许我们重用API代码

在这些场景中,用户像通常一样通过网站访问服务,但是他们与资源的交互由RESTAPI提供动力

随着我对文档的深入研究,这些API请求似乎应该是无状态的,但应该始终有一种机制来授权/验证每个请求,因此为此我研究了OAuth2,因为我无论如何都需要OAuth2来授予第三方访问权。现在,由于在这种特殊情况下,用户的浏览器将充当客户端,通过REST请求资源,因此我想知道推荐的流程是什么

现在我计划按如下方式实现它:我将symfony2与FOSRestBundle和FOSAuthServerBundle一起使用

用户应该像平常一样通过web表单登录,因为我们需要对普通网页和API请求进行身份验证/授权 用户登录后,立即检查是否已为此用户创建OAuth客户端?如果不是,则使用GRANT_TYPE_IMPLICIT创建它。如果客户端已经存在,只需检索它。 是否继续正常OAuth授权Rest请求? 编辑1:


进一步的研究使我认为我不应该将刷新令牌发送回JS应用程序,因为如果浏览器被破坏,这将太危险。也许我可以在用户登录后将刷新令牌存储在服务器后端的某个位置,然后为JS应用程序保留一个特殊链接,以便在旧的访问令牌过期时请求新的访问令牌?这对我来说似乎有点混乱。

似乎有人也遇到了同样的问题:我想决定要么坚持1代码库和严格的REST标准,要么必须灵活,不遵循所有标准。