Angular语言 - CakePHP integration



好的,让我先说一下,这将是一个代代相传的问题。我是一个经验丰富的CakePHP开发人员和一个完全的Angular新手。

我有一个REST支持的后端写在CakePHP v3。我现在想创建一个由Angular支持的前端。web应用程序在后端有大约25个控制器,大约50个表,所以它是一个相当复杂的应用程序。

问题
  1. 我知道Angular并没有真正维护页面或请求之间的状态。对于一个后端应用程序是真正的"RESTful",它也不应该依赖于状态,但认证每个请求/操作-我怎么做呢?一旦用户登录-我如何创建一个令牌,然后在Angular和CakePHP之间为每个请求调用交换?

  2. 当用户在前端的不同页面之间移动时,我如何在Angular中跟踪相同的并维护身份验证访问?

再次强调,如果这些问题看起来像是老生常谈,但是关于集成Angular和CakePHP的例子和文档确实很少。我希望我最终能建立一些关于这些的知识库。

实际上,在不遵循单页方法的应用程序上也可以使用angular。你可以在每个页面的HTML中直接使用指令和控制器。

在这种情况下,身份验证不是问题,因为服务器根据会话知道您是谁,它应该存在。这实际上是我们在一个遗留应用程序中所做的,它可能在遥远的将来成为SPA。

如果需要在请求之间进行身份验证,我建议使用JWT令牌。甚至有一个CakePHP插件实现了JWT的正确认证适配器:https://github.com/ADmad/cakephp-jwt-auth我甚至写了一篇关于这个主题的文章:http://florian-kraemer.net/2014/07/cakephp-and-token-based-auth-with-angular-js/

我不熟悉cake,但你似乎没有考虑到angular构建应用程序的方法。Angular期望的是一个单页面应用,而实际上只有一个页面。所以当你说"页面或请求"时,你实际上指的是两件不同的事情。Angular会发出很多请求来生成一个"页面"。从用户的角度来看,它可能看起来像许多页面,但angular通常依赖于单个index.html文件。

至于身份验证,我不确定Cake期待什么,但通常情况下,你只是发送你的身份验证令牌作为cookie,或在你的http头(取决于你正在使用的认证类型)。Angular会在页面打开的整个过程中保持它的状态,并且通常会适当地存储验证令牌。