Одностраничное приложение (SPA - Angular) и передовая практика аутентификации?

Мы изучаем лучшие способы интеграции стандартной аутентификации (входа) в наш Angular SPA. Мы столкнулись с двумя шаблонами (см. Ниже) и хотели бы видеть, что воспринимается как "лучшая" архитектура для интеграции аутентификации на наш веб-сайт Angular.

PATTERN 1 - ПОДДЕРЖИВАЙТЕ ВХОД ОТ ОТЕЛЯ (см. здесь): В этом шаблоне процесс входа в систему выполняется вне SPA (отдельная загрузка страницы) и после аутентификации пользователя они перенаправляются в SPA (другая загрузка страницы).

PATTERN 2 - INTEGRATE LOGIN INTO SPA (см. здесь и здесь): В этом шаблоне процесс аутентификации находится в пределах SPA, а состояние входа в систему управляется маршрутизатором и службами Angular.

Мы склоняемся к PATTERN 2, однако мы хотели бы услышать от сообщества SO, что ваши мысли и как вы сравниваете эти два шаблона.

Спасибо!

Ответ 1

Я рассматривал то же самое несколько месяцев назад и, наконец, решил пойти с логином в решении SPA.

Я думаю, что определяющим фактором для решения между двумя подходами является то, что вы не захотите загрузить полное приложение до входа пользователя в систему.

Если логин входит в состав SPA, тогда загрузка будет происходить до того, как пользователь будет представлен пользователю. Это имеет два недостатка. Сначала вы загружаете много js, css и т.д., Которые вам даже не нужны заранее. Во-вторых, вы предоставляете неавторизованным пользователям доступ к вашему коду. Я считаю, что это были второстепенные проблемы, поскольку они могут быть рассмотрены, но все еще там, чтобы их рассмотреть.

Если логин отделен от SPA, он дает вам накладные расходы на обслуживание, так как вы должны поддерживать что-то вне своего приложения, а также требовать интеграции с вашим приложением (например, тематика, логотипы, шрифты и т.д.). Но опять же Gmail делает это: P

Я не знаю, какую серверную технологию вы используете, но презентация google из ng-conf предлагает отличное решение этой проблемы (к сожалению, я уже реализовал свое решение, когда это получилось)

https://docs.google.com/file/d/0B4F6Csor-S1cNThqekp4NUZCSmc/edit (слайд 9 принадлежит)