Во-первых, позвольте мне описать приложение: мы работаем над веб-программным обеспечением, которое является своего рода специальным приложением поддержки. Он требует от пользователя входа в систему (мы используем FOSUserBundle). После входа пользователь перенаправляется на панель управления. С панели управления больше нет перезагрузки страницы, фронтэнд построен на Angularjs, и пользователь может получить в любом месте приложения без перезагрузки страницы. Вы могли бы говорить о одном приложении страницы.REST API и клиент на том же сервере, нужна аутентификация API?
Таким образом, данные, которые предоставляются пользователю, извлекаются из остального api (мы используем FOSRestBundle). Это хорошо работает на данный момент.
Существует какая-то дилемма. Только наши сотрудники получат доступ к этому приложению (пока). Поэтому для доступа к справочной службе сотрудник должен войти в систему. Данные, которые передаются во внешний интерфейс через angularjs, вызываются через api, поэтому пользователь, который только что зарегистрировался, нуждается в повторной аутентификации по каждому запросу из-за отдыха.
Проблема: Поскольку бэкенд работает на Symfony2 давайте просто попытаться получить объект пользователя вошедшего в систему пользователя, когда апи сделан вызов:
$this->get('security.context')->getToken()->getUser()
возвращает Анон., что стоит за анонимным, или
$this->getUser();
возвращает только нуль.
Таким образом, аутентифицированный контекст, кажется, ушел при использовании остального api. Однако, когда я вызываю действие непосредственно без отдыха, я могу получить информацию о пользователе.
Итак, нам нужно обеспечить наш отдых api и получить информацию о пользователе для каждого вызова api. Мы не хотим, чтобы сторонние люди обращались к нашему приложению, просто к сотрудникам. Я не знаком с OAuth, но пользователь будет перенаправлен на стороннюю страницу, чтобы разрешить/запретить доступ к его данным? Это не было бы для нас вариантом.
Основываясь на этой информации, есть ли у вас какие-либо предложения или идеи по обеспечению безопасности api и переносу пользовательских данных, чтобы getUser не возвращал значение null или anon. но исполнительный пользователь вошел в систему?
трудно догадаться, что случилось ... это, безусловно, ошибка в вашем коде или брандмауэре неправильно сконфигурирована ... но не видя какого-либо кода, как это можно узнать? – mpm
@mpm thx для ответа, посмотрите на мое редактирование –