Angular - интеграция CakePHP

ОК - позвольте мне начать с того, что это будет опираться на вопрос типа "рука-вниз". Я опытный разработчик CakePHP и полный новичок в Angular.

У меня есть бэкэнд с включенным REST, написанный на CakePHP v3. Теперь я ищу для создания интерфейса с интерфейсом Angular для него. Веб-приложение имеет около 25 контроллеров на бэкэнд около 50 таблиц - так что это довольно сложное приложение.

Вопросы

  • Я понимаю, что Angular действительно не поддерживает состояние между страницами или запросами. А для бэкэнд-приложения действительно "RESTful" он также не должен полагаться на состояние, но аутентифицировать каждый запрос/действие - как это сделать? Как только пользователь входит в систему - как мне создать токен, который затем обменивается между Angular и CakePHP для каждого вызова запроса?

  • Когда пользователь перемещается между разными страницами в интерфейсе, как мне отслеживать его и поддерживать доступ к аутентификации в Angular?

Опять же - если эти вопросы кажутся ручными, но примеров и документации действительно недостаточно для интеграции Angular с CakePHP. Я надеюсь, что в конечном итоге я смогу создать некоторую базу знаний.

2 ответа

На самом деле можно использовать 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/


Я не знаком с тортом, но вы, похоже, не учитываете подход angular к созданию приложений. angular ожидает одностраничное приложение. Существует только одна страница. Поэтому, когда вы говорите "страницы или запросы", вы действительно имеете в виду две разные вещи. angular выдаст много запросов на создание одной "страницы". С точки зрения пользователя он может выглядеть как много страниц, но angular обычно полагается на один файл index.html.

Что касается аутентификации, снова я не уверен, что ожидает Cake, но, как правило, вы просто отправляете токен аутентификации в качестве файла cookie или в свой http-заголовок (в зависимости от типа используемого вами авторизатора). angular будет поддерживать свое состояние в течение всего времени, когда страница открыта и обычно будет хранить токен аутентификации.

licensed under cc by-sa 3.0 with attribution.