2014-10-31 2 views
0

У меня возникли проблемы с определением структуры моего приложения. В настоящее время это веб-приложение, созданное с использованием обычных контроллеров, просмотр твинов и т. Д. И использование пакета FOS для аутентификации. В этом приложении можно создавать объекты, которые следует рассматривать как «мобильный пользователь». Теперь мне нужен API для мобильного приложения, в котором должны войти в систему «мобильные пользователи», но я не могу понять, как эта аутентификация должна быть построена ,Symfony2, обычная + проверка на отдых

Должен ли я создать пользователя в таблице пользователя вместе с пользователями веб-приложения? Возможно ли потребовать от пользователя иметь определенную роль для входа на обычную страницу входа?

Или я должен добавить столбец имени пользователя и пароля в объект «мобильный пользователь» и сделать пользовательский логин для api. Но как это достигается? Я думаю использовать angularjs в мобильном приложении, если это имеет какое-то влияние на решение этой проблемы.

+0

Вы хотите, чтобы мобильный пользователь должен был войти? Или должен ли этот пользователь считаться аутентифицированным? – Chausser

+0

Как будет несколько мобильных пользователей, им нужно будет войти в систему. –

+0

Является ли мобильным пользователем ИМЕТЬ другим сущностью, чем другие пользователи? – Chausser

ответ

0

Одним из возможных решений будут использовать FOSOAuthServerBundle

В этом случае вы можете иметь то же место сохраняйте своих пользователей как для веб-приложений, так и для мобильных приложений. Пользователи могут аутентифицироваться с использованием тех же учетных данных в веб-и мобильном приложении, но аутентификацию для мобильного приложения можно выполнить с помощью вызова ajax.

Благодаря oAuth вы не храните логин/пароль в своем мобильном приложении. Сам комплект написан таким образом, который идеально сочетается с Symfony.

Чтобы получить доступ к различным ресурсам, используя различную безопасность вы просто настроить различные межсетевые экраны:

security.yml

security: 
    firewalls: 
     oauth_token: 
      pattern: ^/oauth/v2/token 
      security: false 
     api: 
      pattern: ^/api 
      fos_oauth: true 
      stateless: true 
     web_secured: 
      pattern: ^/ 
      stateless: true 
      your_security_factory:  true 

Проверьте эти ресурсы для получения дополнительной информации:

0

Вы не должны использовать другой провайдер пользователя, но вам нужно будет настроить другой брандмауэр в security.yml:

firewalls: 
    api_firewall: 
     pattern: "^/api/" 
     form_login: 
      check_path: /api/login_check 
      login_path: /api/login 

Тогда вы можете показать пользователь форму входа. Используя угловое значение, отправьте его в check_path. Symfony использует файлы cookie для хранения информации об аутентификации, поэтому вам может потребоваться настроить угловые, чтобы принимать и передавать их при последующем запросе.

Если вы не хотите делать, что вы могли бы использовать ключ API и написать собственный аутентификатор реализующего SimplePreAuthenticatorInterface

Смежные вопросы