Я предпочитаю серверную авторизацию. План действий такой:
- бэкенд смотрит, авторизован ли пользователь
- если нет = кидаем на страницу авторизации
- если да = запускаем SPA
В самом SPA рендерим данные пользователя бэкендом перед скриптами:
<script>
window.$$userData = <?= json_encode($_SESSION['user']); ?>;
</script>
<script src="/path/to/angular.js"></script>
<script src="/path/to/app.js"></script>
Создаем сервис, который затем можно инжектить куда угодно.
(не забывайте, что .constant - это .value, который доступен на этапе конфигурации и не может быть изменен через $decorator - соответственно, можно спокойно менять поля объекта и они везде обновятся)
app.config(['$provide', function($provide) {
$provide.constant('userData', angular.copy(window.$$userData));
}]);